IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Узнать Handle окна по имени файла
Unconnected
сообщение 29.05.2010 17:34
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Мне нужно узнать хэндл окна. Допустим, запускаю я cmd через ShellExecute, и нужно мне получить её хэндл. Через FindWindow нельзя, т.к. заголовок cmd может быть разный - у некоторых в начале приписывается "Администратор" (видимо, сидят под администратором). Я думаю, можно перебирать все окна и искать по слову cmd в заголовке. Попробовал ф-ю EnumWindows, вот так:

var mypointer:pointer;
t:hwnd;
function MyCallbackFunction(Wnd:HWnd; P: Pointer):Bool; stdcall;
begin
messagebox(0,pchar(GetModuleName(GetClassLong(wnd,GCL_HMODULE))),'',0);
if pos('CMD',uppercase(GetModuleName(GetClassLong(wnd,GCL_HMODULE))))>0 then t:=wnd;
end;

...

shellexecute(0,'open','cmd',0,0,sw_show);
EnumWindows(@MyCallbackFunction, LongInt(MyPointer));
if t=0 then messagebox(0,'dfdf','',0);
...

, и нифига, getmodulename не хочет возвращать имя файла по хэндлу. Помогите, а то меня скоро в гугле как ддос-бота забанят))


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 3.06.2010 16:29
Сообщение #2


Гость






Цитата
ведь апи-команды, вызываемые из консоли, вроде как ничем не отличаются от тех, которые вызываются из GUI-приложения.
Зато поведение консольного окна отличается от того, как ведет себя окно графическое. Возьмет и переключится на консоль в тот момент, когда ты собираешься занести строку в Run-диалог. На долю секунды, не важно, насколько. Но в момент посылки строки Run-диалог будет неактивен. И все... Кнопка "Ok" останется за-disable-нной, несмотря на то, что потом фокус опять перешел назад на диалог.

Учитывай, что хозяином консоли является системный процесс csrss. Что так ему в голову придет - ты знаешь? Я - нет...

Вопрос на засыпку: а что ты, собственно, выиграл от того, что сделал консольную программу? Думаешь, размер ее будет меньше, чем у оконного приложения? Вряд ли, напиши на чистом API (если тебе от программы больше ничего не надо, кроме как запускать что-то через через Start -> Run, то в 50 строк точно уложишься) - размер будет еще меньше, чем размер консольного приложения... Зато работать будет стабильно...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Unconnected   Узнать Handle окна по имени файла   29.05.2010 17:34
volvo   Кто тебе сказал, что имя модуля - это заголовок? З...   29.05.2010 18:20
Unconnected   Спасибо, это работает. Ещё вопрос, как можно смени...   29.05.2010 23:39
volvo   В чем неработоспособность проявляется? Я вот сдела...   30.05.2010 1:44
Unconnected   раскладка блокнота тут же поменялась на английскую...   30.05.2010 2:02
volvo   А... Ну, так ты бы и говорил, что хочешь работать ...   30.05.2010 2:39
Unconnected   Ого, ну и заморочки. Я сейчас попробовал работать ...   30.05.2010 9:36
volvo   У тебя будет гораздо больше проблем, чем ты думаеш...   30.05.2010 10:23
Unconnected   Ну, мне надо исполнить cmd-команду, но как будто...   30.05.2010 21:47
volvo   :blink: Эт чего было? Ты что, серьезно вызываешь о...   30.05.2010 23:23
Unconnected   Разобрался, узнал много нового ) Только вот этот к...   31.05.2010 16:13
volvo   Как ни пытался - не получилось у меня, чтоб AV выл...   31.05.2010 18:28
Unconnected   Ага, поставил именно в начале и конце программы - ...   1.06.2010 18:11
volvo   Ты про Shell.Application? Вот тут: MSDN -> Shel...   1.06.2010 18:17
Unconnected   Спасибо, в итоге добился, чего хотел :)   1.06.2010 23:35
Unconnected   Volvo, а вот, чисто теоретически, можешь предполож...   2.06.2010 23:13
volvo   Теоретически - могу, такое будет, когда программа ...   2.06.2010 23:41
Unconnected   Странно, ведь апи-команды, вызываемые из консоли...   3.06.2010 16:13
volvo   Зато поведение консольного окна отличается от того...   3.06.2010 16:29
Unconnected   Даа, апи сила) Почитал, переделал (коряво, кажется...   3.06.2010 20:45


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.07.2025 18:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"