Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.031 c
11-1062155159
Dimaxx
2003-08-29 15:05
2004.04.18
KOLDHTMLEDIT не удаляется по Free!!!


14-1079884644
Piter
2004-03-21 18:57
2004.04.18
История одного байта


3-1079675191
qwe
2004-03-19 08:46
2004.04.18
Помогите с UpdateSQL!


1-1080643180
-kiril
2004-03-30 14:39
2004.04.18
SelectDirectory


1-1080835148
Leon
2004-04-01 19:59
2004.04.18
Создание "процедурного типа" с параметром





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