Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
15th
Сен
Handle окна по файлу EXE
Posted by Chas under Delphi
как зная EXE имя файла определить Handle окна.
Stilet
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:=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;
raxp
добавлю 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;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)