Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Помоги с 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 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
1-1081080709
Beginner1
2004-04-04 16:11
2004.04.18
Каким образом можно реализовать следующую задачу?


14-1080076271
Andy BitOff
2004-03-24 00:11
2004.04.18
На банерах кликать надо?


14-1079953463
Style
2004-03-22 14:04
2004.04.18
У нас на сайте парнишка придумал такую вещь


9-1066645021
MozG
2003-10-20 14:17
2004.04.18
Как избавиться от дополнительных клавиш в DXInput?


1-1080548862
Хэнк
2004-03-29 12:27
2004.04.18
Можно сделать, чтобы компоненты грабились в bmp файл?