Главная страница
    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.034 c
4-1076290857
EcoloRa
2004-02-09 04:40
2004.04.18
Свое окно поверх окна диспетчера задач


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


4-1076750411
AlexandrOd
2004-02-14 12:20
2004.04.18
Управление другой программой


1-1080312679
jeka_t
2004-03-26 17:51
2004.04.18
Rave отчеты


1-1080545589
KOt
2004-03-29 11:33
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский