Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Вниз

Handle запущенного приложения   Найти похожие ветки 

 
Sergey SP   (2003-11-13 13:47) [0]

Возможно ли как-то запустить приложение, тут же получить его хэндл и через этот хендл с ним работать.
Причем интересует именно явное получение хэндла, т.к. поиск по заголовку...


 
Игорь Шевченко   (2003-11-13 13:54) [1]

У приложений нет Handle.


 
Sergey SP   (2003-11-13 15:23) [2]

Ну хорошо, у окна.


 
Digitman   (2003-11-13 15:39) [3]


> поиск по заголовку


заголовку чего ? окна ?
окон с интересующим заголовком в дан.момент времени с системе м.б. туева хуча... как собираешься идентифицировать конкретно нужное ?


> через этот хендл с ним работать


что есть "работать" ?


 
Sergey SP   (2003-11-13 15:57) [4]

Хорошо, по другому.
Есть программа которую нужно запустить, "нажать" в ней необходимые кнопочки, дождаться пока она отработает и закрыть ее. Проблема в том что гарантии что в данный момент не выполняется другая копия программы нет, поэтому нужно однозначно знать что я работаю именно с тем экземпляром программы что запустил.


 
Digitman   (2003-11-13 16:05) [5]


> нужно однозначно знать что я работаю именно с тем экземпляром
> программы что запустил.


каковы же критерии идентификации, по-твоему ?


> "нажать" в ней необходимые кнопочки


кнопка кнопке рознь
не представляю, как ты собрался "нажимать кнопки", если они, к примеру, рисованые и не имеют своего окна


 
Prov   (2003-11-13 17:41) [6]

Нельзя получить хэндл приложения, можно получить хэндл ео окон...
Например, хэндл главного окна... Например, так:

var WD: hWnd;
WD:= FindWindow(nil, "Window"); где Window - заголовок твоего окна
а потом можно делать с ним всё, что хочешь


 
DillerXX   (2003-11-14 10:28) [7]

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

procedure TForm1.Button1Click(Sender: TObject);
var si:STARTUPINFO;
pi:PROCESS_INFORMATION;
cmdline:string;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
cmdline:="c:\command.com";
if not CreateProcess( nil, // No module name (use command line).
PChar(cmdline), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent"s environment block.
nil, // Use parent"s starting directory.
si, // Pointer to STARTUPINFO structure.
pi ) // Pointer to PROCESS_INFORMATION structure.
then
begin
ShowMessage( "CreateProcess failed." );
Exit;
end;
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
ShowMessage("Done !");
end;

Для того чтобы найти само окно надо как уже сказали

var WD: hWnd;
WD:= FindWindow(nil, "Window");

Что бы найти кнопку, эдит и д.т. то вот:

var h2:HWND;
h2:=FindWindowEx(h,0,nil,"Название того, что хочешь найти");

Имя класса можно не указывать, всё равно названия обычно не повторяются
Если это кнопка то:

SendMessage(h2,BM_CLICK,0,0);

А как вводить текст в едит я забыл.


 
Prov   (2003-11-14 10:31) [8]

Ввести текст в эдит можно так: SetWindowtext



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
14-63340
N169
2003-12-30 11:26
2004.01.20
Японский день (LOL)


14-63387
Nikolay M.
2003-12-31 10:11
2004.01.20
В тему НГ - гороскоп (сори, кто видел) :)))))


1-63168
DDA
2004-01-10 18:57
2004.01.20
ComboBox


3-63036
Apollo
2003-12-11 17:05
2004.01.20
Обновление DataSet


1-63233
Zeon
2004-01-05 00:36
2004.01.20
Проги под Linux





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский