Главная страница
    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.035 c
3-1080119640
griff
2004-03-24 12:14
2004.04.18
16 цветов


6-1076900173
Alek Aaz
2004-02-16 05:56
2004.04.18
DNS кэш


1-1080289324
kdy
2004-03-26 11:22
2004.04.18
Как отловить событие сворачивания формы?


7-1077179598
gogi
2004-02-19 11:33
2004.04.18
Как получить код возврата консольного приложения ?


1-1080732046
TATIANA
2004-03-31 15:20
2004.04.18
Модальная форма - кнопка "ОК" - Edit





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