QIP Home QIP Forum

Go Back   QIP Forum > Курилка (счетчик сообщений отключен) > Флейм

Флейм Здесь можно говорить о чем угодно. Изложить какую-либо проблему, рассказать какую-либо историю, создать голосование ...

Reply
 
Thread Tools Display Modes
Old 08.07.2013, 16:25   #1
Tolias28
QIP User
 
Tolias28's Avatar
 
Join Date: 08/2009
Posts: 217
Smile Вопрос к разработчику

Я не знаю, корректно ли то, что я такой вопрос задаю тут на форуме. Но все же надеюсь, что разработчик ответит на вопрос простого смертного

Как в квипе реализовано открытие ссылок по нажатию средней кнопки мыши? (интересует техническая сторона) Буду очень признателен за код или описание самого принципа). Вещь эта очень полезная, когда после клика средней кнопкой мыши окно сообщений квипа остается на переднем активном плане, а ссылка открывается в браузере в фоне.
Я в своей программе пробовал реализовать это самое, но:
1. Мое решение работает только если браузер не запущен, либо если и запущен, то не свернут(а просто открыт на заднем плане)
2. С браузером Opera вообще беда. С ним мое решение вообще не работает.

Очень интересно, как удалось разработчику победить эти траблы и добиться прекрасной работы независимо от дефолтового браузера на компе
Tolias28 вне форума   Reply With Quote
Old 08.07.2013, 18:20   #2
Sega-Zero
QIP Developer
 
Sega-Zero's Avatar
 
Join Date: 05/2006
Posts: 1,683
Default

если схематично то так:
begin
hwnd := GetForegroundWindow;
shellexecute(url, ...)
SetForegroundWindow(hwnd);
end;

срабатывает оно не совсем так гладко, как кажется, но чаще всего именно так, как хочется:)
__________________
www.sega-zero.blogspot.com <- как продвигается работа
Sega-Zero вне форума   Reply With Quote
Old 09.07.2013, 18:04   #3
Tolias28
QIP User
 
Tolias28's Avatar
 
Join Date: 08/2009
Posts: 217
Default

Sega-Zero, большое спасибо за ответ)

Странно, потому что я использую точно такой же код, но форма не возвращает себе верхний план после клика по ссылке. А квип возвращает...

Правда, мой код на C++. Но не думаю, что проблема в этом. Ведь что в квипе, что в моей программе используются те же самые винапишные функции.
Quote:
HWND hwndForegroundWindow = GetForegroundWindow();
ShellExecute(NULL, L"open", L"https://www.google.com.ua/", NULL, NULL, SW_SHOWNOACTIVATE);
//Sleep(1000);
SetForegroundWindow(hwndForegroundWindow);

Last edited by Tolias28; 09.07.2013 at 18:35.
Tolias28 вне форума   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +4. The time now is 00:29.


Powered by vBulletin.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
©2004 - 2012 QIP.RU