Страница 1 из 1
Программно кликнуть по иконке на рабочем столе
Добавлено: 17 июл 2007, 00:18
Serg.A.S
Здравствуйте.
Я только начинаю программировать, потому вопрос может показаться глупым.
Ситуация такая:
1) Узнаю HWND рабочего стола (ака ListView с иконками)
Код: Выделить всё
HWND hWnd = FindWindow("ProgMan", NULL);
hWnd = GetWindow(hWnd, GW_CHILD);
hWnd = GetWindow(hWnd, GW_CHILD);
2) Узнаю число иконок на десктопе:
Код: Выделить всё
DWORD dwCount = SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);
printf("%d icons on desctop\n", dwCount);
А теперь я хочу сэмитировать двойной клик по иконке с заданным ID, притом хочу чтобы оно работало даже тогда, когда иконка закрыта каким-то окном. Пробовал копать в сторону SendMessage и WM_LBUTTONDBLCLK или NM_DBLCLK, но все безрезультатно.
Помогите, пожалуйста, нубу.
Re: Программно кликнуть по иконке на рабочем столе
Добавлено: 17 июл 2007, 12:44
Serg.A.S
Да, хочу напомнить, все необходимые структуры и константы объявляются в commctrl.h
Re: Программно кликнуть по иконке на рабочем столе
Добавлено: 17 июл 2007, 13:08
BBB
Serg.A.S,
А если пойти "другим путем".
Известно же, что "Рабочий стол" - это каталог на диске в определенном его (диска) месте. Иконки - это файлы типа (с расширением *.lnk). Папки - подкаталоги.
Для "шелчка по иконке" достаточно будет выполнить ShellExecute на этот самый файл.
Расположение каталога "Рабочий стол" , как будто можно взять из реестра. Но это ч методом "анализа" нашел. Возможно, где-то это и строго документировано:
раздел реестра:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Переменная:
Desktop
Re: Программно кликнуть по иконке на рабочем столе
Добавлено: 31 июл 2007, 10:40
ssDev
Вот пример управления мышкой
#include <windows.h>
int main(int argc, char* argv[]){
mouse_event(MOUSEEVENTF_MOVE,200,200,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
return 0;
}
остается только найти координаты иконки (это тоже должно просто решатся)
Re: Программно кликнуть по иконке на рабочем столе
Добавлено: 23 ноя 2007, 12:29
Romeo
Во-первых, чтобы получить путь к каталогу рабочего стола следует использовать Shell функцию SHGetSpecialFolderPath. Это если использовать подход, предложенный господином BBB.
Во-вторых, есть ещё один вариант. В моём понимании он даже более правильный. Полностью перейти на Win Shells (понадобятся базовые знания COM). В этом случае читать в MSDN о следующих интерфейсах: IShellLink, IActiveDesktop. Поверь мне, с помощью них можно сделать всё, что угодно с рабочим столом и иконками на нём.
Re: Программно кликнуть по иконке на рабочем столе
Добавлено: 23 ноя 2007, 13:44
WinMain
Честно говоря, не совсем понятен смысл данного действия. Если известно имя ярлыка на рабочем столе или в каком-то другом месте, то должно быть известно и имя файла, на который он ссылается. Нельзя ли программно напрямую открывать сам этот файл, а не через ярлык? Предположим, в ярлыке могут быть изменены какие-то параметры запуска приложения. Но так эти же настройки можно хранить и не в ярлыке, а в каком-нибудь INI-файле или в реестре.