Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 09:21   #1
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию Handle окна по файлу EXE

как зная EXE имя файла определить Handle окна.
SERG1980 вне форума Ответить с цитированием
Старый 09.12.2009, 09:28   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

найти pid процесса и все его дочерние...
EnumThreadWindows c параметром dwThreadId= pi.hThread даст хэндл главного окна, если оно есть...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.12.2009, 09:49   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
найти pid процесса и все его дочерние...
EnumThreadWindows c параметром dwThreadId= pi.hThread даст хэндл главного окна, если оно есть...
Буду признателен если распишите поподорбнее, к сожалению никогда не приходилось решать такие задачи
SERG1980 вне форума Ответить с цитированием
Старый 09.12.2009, 10:19   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Когда-то такой пример рулил:
Код:
unit Unit1;

interface

uses         tlhelp32,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure GetProcessList;
  private
    { Private declarations }
  public

    proc:tagPROCESSENTRY32;pc:Cardinal;
 ProcArray:array of tagPROCESSENTRY32;
    { Public declarations }
  end;
  function erq(q:Hwnd;c:Lparam):boolean; stdcall;

var

  Form1: TForm1;

implementation



{$R *.dfm}
//********* PROCEDURE**********
procedure TForm1.GetProcessList;
//const
Var i:integer;
begin         i:=0;
  pc:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  Process32First(pc,proc);
  repeat
      setlength(procarray,length(procarray)+1);
      procarray[i]:=proc;  inc(i);
  until not Process32Next(pc,proc);
end;
//********* END PROCEDURE******* {}


function erq(q: Hwnd; c: Lparam): boolean;
begin
form1.caption:=form1.caption+inttostr(q); result:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   GetProcessList;
   //Caption:=enumThreadWindow_Crtfox(GetCurrentThreadId,',');
  if not EnumThreadWindows({GetCurrentThreadId}2612, @erq,0)
  then RaiseLastWin32Error;
end;
end.
Здесь 2612 - Это IDThread.
Я вот правда забыл как его получать...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2009, 10:43   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

зы: Stilet опередил
добавлю pid по имени, массив ни к чему:
Код:
function search(name:string): Cardinal;
var ExeFile    : String;
    PE         : TProcessEntry32;
    FSnap,Handl: THandle;
begin
 result:= 0;
 FSnap:= Tlhelp32.CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 //
 PE.dwSize:= SizeOf(PE);
 if (Tlhelp32.Process32First(FSnap,PE)) Then
  Repeat
   ExeFile:= PE.szExeFile;
   //
   if pos(pchar(lowercase(name)), lowercase(ExeFile))>0 then
    Begin
     result:= PE.th32ProcessID;
     //Handl:= OpenProcess(PROCESS_ALL_ACCESS,False,PE.th32ProcessID); // PE.th32ProcessID
     //Прекращаем процесс
     //terminateProcess(Handl,1);
     //WaitForSingleObject(Handl,INFINITE); //Ждем завершения
     break
    End;
   Until Not Process32Next(FSnap,PE)
end;
далi як вже сказали...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 09.12.2009 в 10:52.
raxp вне форума Ответить с цитированием
Старый 09.12.2009, 10:58   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Спасибо помогли!!!!!
SERG1980 вне форума Ответить с цитированием
Старый 13.06.2012, 23:05   #7
parik1
Новичок
Джуниор
 
Регистрация: 13.06.2012
Сообщений: 1
По умолчанию

Я прошу прощения конечно. А не могли бы вы подробно рассказать, а то я ,извените, чайник. И у меня не компилируется, требует тпу.. Если можно расскажите неучу...
parik1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать handle окна имея handle обного из его компонентов SeRhy Win Api 2 18.10.2009 19:31
Позиция окна, по Handle. Izhic Win Api 4 13.10.2009 17:18
смена курсора у окна с известным handle Oburec Win Api 3 10.07.2009 06:23
Получить Handle TEdit'a, зная дескриптор родительского окна Cold_Night Win Api 2 13.02.2009 16:47
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48