Главная страница
    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.01 c
3-63026
BlackTiger
2003-12-21 22:38
2004.01.20
Глюки грида DeveloperExpress4? Или как?


3-62984
jen_bond
2003-12-23 20:05
2004.01.20
Вопрос по нумерации


14-63329
Шишкин Илья
2003-12-26 21:26
2004.01.20
Беспроводная оптическая мышь Logitech MX700


4-63437
Shluz
2003-11-15 00:59
2004.01.20
Координаты мыши в системе одного приложения


1-63093
Zheks
2004-01-07 19:14
2004.01.20
Поочерёдная запись в файл двумя разними программами.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский