Форум: "WinAPI";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизПомоги с Handle Найти похожие ветки
← →
kentavr © (2004-02-07 16:23) [0]Проблема такая :
есть .ехе какогото запущенного процесса и место откуда он был запущен.
Вопрос :
как определить Handle и работать с ним(свернуть, развернуть).
заранее спасибо.
← →
Digitman © (2004-02-07 16:27) [1]
> есть .ехе какогото запущенного процесса
строго наоборот : есть процесс (или более чем 1 процесс), стартованный из заданного EXE
> как определить Handle
см. OpenProcess()
> свернуть, развернуть
процесс не может быть ни свернут ни развернут
эти понятия относятся к окнам, которые может создавать процесс ... а может и не создавать...
← →
kentavr © (2004-02-07 17:43) [2]Нет нет я поставил определитель процессов и определённый процесс я хочу или свернуть или развернуть
← →
kentavr © (2004-02-07 17:45) [3]тьфу тьфу нето я хочу управлять окном этого приложения (если оно есть)
← →
gavrila © (2004-02-07 19:51) [4]Пробуй ето :
← →
gavrila © (2004-02-07 19:52) [5]sorry:
unit UWinList;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
PMDoingList: TPopupMenu;
PMWin: TMenuItem;
PMEnable: TMenuItem;
PMDisable: TMenuItem;
PMSubEnabled: TMenuItem;
PMSubVisibling: TMenuItem;
PMVisible: TMenuItem;
PMUnVisible: TMenuItem;
GetControl: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure StringGrid1DblClick(Sender: TObject);
procedure PMDoingListPopup(Sender: TObject);
procedure PMEnableClick(Sender: TObject);
procedure PMDisableClick(Sender: TObject);
procedure PMVisibleClick(Sender: TObject);
procedure PMUnVisibleClick(Sender: TObject);
procedure GetControlClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
NWindow: HWND;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
Var
NWindow: HWND;
WinText: array[0..256] of Char;
I:Integer;
begin
For I:= 1 To StringGrid1.RowCount Do
begin
StringGrid1.Cells[0, I]:="";
StringGrid1.Cells[1, I]:="";
end;
StringGrid1.Cells[0, 0] := "Handle";
StringGrid1.Cells[1, 0] := "Win text";
I:=0;
NWindow:= Handle;
Repeat
NWindow:= GetNextWindow(NWindow, GW_HWNDNEXT);
GetWindowText(NWindow, WinText, 254);
If WinText<>"" then
begin
Inc(I);
StringGrid1.RowCount := I;
StringGrid1.Cells[0, I]:= IntToStr(NWindow);
StringGrid1.Cells[1, I]:= WinText;
end;
Until (NWindow = 0);
StringGrid1.FixedRows:=1;
end;
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
NWindow:= 0;
If StringGrid1.Row = 0 Then
Exit;
Try
If Trim(StringGrid1.Cells[0, StringGrid1.Row]) <> "" Then
Begin
NWindow:= StrToInt(Trim(StringGrid1.Cells[0, StringGrid1.Row]));
PMDoingList.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
End;
Except
End;
end;
procedure TForm1.PMDoingListPopup(Sender: TObject);
begin
If Trim(StringGrid1.Cells[0, StringGrid1.Row]) <> "" Then
NWindow:= StrToInt(Trim(StringGrid1.Cells[0, StringGrid1.Row]));
// NWindow:= GetDesktopWindow();
If NWindow= 0 Then
Begin
PMWin.Enabled:= False
End
Else
Begin
PMWin.Enabled:= True;
End;
// получим параметры окна
Try
// Окно / Доступно / Недоступно
PMEnable.Checked := IsWindowEnabled(NWindow);
PMDisable.Checked := Not PMEnable.Checked;
PMVisible.Checked := IsWindowVisible(NWindow);
PMUnVisible.Checked := Not PMVisible.Checked;
//
Except
on E: Exception do
Begin
ShowMessage(E.Message);
ShowMessage(IntToStr(E.HelpContext));
Exit;
End;
End;
end;
procedure TForm1.PMEnableClick(Sender: TObject);
begin
Try
EnableWindow(NWindow, True);
Except
Exit;
End;
PMEnable.Checked := True;
PMDisable.Checked := False;
end;
procedure TForm1.PMDisableClick(Sender: TObject);
begin
Try
EnableWindow(NWindow, False);
Except
Exit;
End;
PMEnable.Checked := False;
PMDisable.Checked := True;
end;
procedure TForm1.PMVisibleClick(Sender: TObject);
begin
Try
ShowWindow(NWindow, SW_SHOW);
Except
Exit;
End;
PMVisible.Checked := True;
PMUnVisible.Checked := False;
ShowWindow(Handle, SW_SHOW);
end;
procedure TForm1.PMUnVisibleClick(Sender: TObject);
begin
Try
ShowWindow(NWindow, SW_HIDE);
Except
Exit;
End;
PMVisible.Checked := False;
PMUnVisible.Checked := True;
end;
procedure TForm1.GetControlClick(Sender: TObject);
{Var
idWin: Variant;
pdwProcessId: LPDWORD;
}begin
// idWin:= GetWindowThreadProcessId(NWindow, pdwProcessId);
// idWin:= GetWindowDC(NWindow);
end;
end.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c