#post-id: 2775-20-48
#original-date: 1.03.2008 Sat
#original-time: 8:48 PM
#original-day:  2775
#original-host: WinXP Prof SP2 (Build 2600)

Дожили ^^ Слушаю Initial D Second Stage Non-stop Selection и отдельным потоком угадываю машины по звуку двигателя ^^ Любопытно, что очень характерный звук FD Кейске ни разу я не услышала.

Кстати, у меня возникла гениальная идея. Global Hot Keys у меня запускает всё на том же рабочем столе, на котором сам запущен. Я сидела, писала красивый код, который создаёт нить, потом переключает её на другой рабочий стол, потом делает ShellExecute(), и процесс должен стартовать на рабочем столе нити.

Щас! Не работает, и всё, хоть тресни. MessageBox() нормально, а это - нет. Я понимаю, что User32 функции и Kernel32 функции - не есть одно и тоже... Но... Я начала копать. В раздере про десктопы ни чего, в справке по ShellExecute() - тоже. Добралась до CreatePricess(), ведь она в конечном итоге стартует процесс. Вопрос был в том, от куда она узнаёт, на каком десктопе запускать. И я нашла... lpStartupInfo, lpDesktop:

Windows NT only: Points to a zero-terminated string that specifies either the name of the desktop only or the name of both the window station and desktop for this process. A backslash in the string pointed to by lpDesktop indicates that the string includes both desktop and window station names. Otherwise, the lpDesktop string is interpreted as a desktop name. If lpDesktop is NULL, the new process inherits the window station and desktop of its parent process.

Сие означает, что есть три десктопа. Десктоп ввода, тоесть выбранны, десктоп процесса, на котором запусается новый процесс, если не указывается конкретный десктоп в вышеуказанном параметре, и десктоп нити, на котором нить создаёт окна (это для сервисов нужно). Короче, мой алгоритм провалился...

Сейчас думаю сделать гадость в виде отдельного stub'а, который будет стартовать процесс, а Global Hot Keys запустит его на нужном десктопе (текущем). Хммм... Интересно, как лучше сделать обмен данными? Через файловую проекцию или через трубу? А то передавать данные новому процессу через INI - это несовременно...

Хотя... "Лучше по-простому, чем по-умному" ^^ Пишем INI в темпе (чтобы не орала Виста), передаём его как параметр, а потом ждём его завершения. Ну и результат вытаскиваем из того же INI ^^

Но файловую проекцию я всё равно попробую... Наверное ^^ Если не обленюсь ^^

#music: Initial D\Initial D Second Stage Non Stop Selection\Wain L / Goodbye Yellow Brick Road