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

Вниз

Handl ы   Найти похожие ветки 

 
seamcat   (2005-05-28 01:18) [0]

Помогите пожалуйста. У меня программа должна запускать два абсолютно одинаковых приложения и управлять ими. У меня возникла проблема с определением дескрипторов. Они ж одинаковые! Подскажите, как разрешить?


 
Reindeer Moss Eater ©   (2005-05-28 01:20) [1]

Они ж не одинаковые.


 
Marser ©   (2005-05-28 01:21) [2]

По определению нге может быть двух одинакових дескрипторов.


 
seamcat   (2005-05-28 01:22) [3]

Одинаковые не дискрипторы, а окна. И прога всегда выдает дескриптор одного и того же.


 
Reindeer Moss Eater ©   (2005-05-28 01:24) [4]

Значит не дескрипторы одинаковые.
А это ты находишь одно и то же окно два раза.
Разницу понимаешь?


 
Marser ©   (2005-05-28 01:25) [5]

HWND у них точно разные.


 
Marser ©   (2005-05-28 01:26) [6]

EnumWindows


 
seamcat   (2005-05-28 01:29) [7]

А что за функция? Какие параметры? Я не сильно разбираюсь...


 
Reindeer Moss Eater ©   (2005-05-28 01:30) [8]

Да забей.


 
seamcat   (2005-05-28 01:31) [9]

Не могу. На след неделе лабу по операционным системам сдавать, а у меня конь еще не валялся...


 
Reindeer Moss Eater ©   (2005-05-28 01:36) [10]

А что за функция?

А откуда ты вообще взял те два одинаковых дескриптора?
Приятель в гости заходил, с собой их принес?


 
seamcat   (2005-05-28 01:38) [11]

Да не брала я их ниоткуда! Просто прога запускает одно приложение 2 раза подряд и автоматически пытается определить их дескрипторы, а так как название и клас окон одинаковы между собой, то получается, что в итоге она имеет дескриптор только одного окна! Лучше помогите...


 
Reindeer Moss Eater ©   (2005-05-28 01:41) [12]

а так как название и клас окон одинаковы между собой

Сделай их неодинаковыми. По крайней мере заголовки.


 
Marser ©   (2005-05-28 01:41) [13]

Вот готовый пример перечисления всех окон в системе с помощью EnumWindows:
unit uenumwindows;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Memo1Change(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }
 end;
function EnumWindowProc(hwnd: HWND; lParam: Integer): BOOL; stdcall;
var
 Form1: TForm1;

implementation

{$R *.dfm}
function EnumWindowProc(hwnd: HWND; lParam: Integer): BOOL;
var p:pchar;
begin
p:=StrAlloc(120);
if hwnd>0 then
  begin
    result:=true;
    GetWindowText(hwnd,p,GetWindowTextLength(hwnd)+1);
    Form1.Memo1.Lines.Add(inttohex(hwnd,4)+": "+string(p));
  end;
StrDispose(p)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowProc,0);
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
label1.Caption:=inttostr(memo1.lines.Count);
end;

end.

Собственно, все перебирать необязательно. Достаточно дождаться поступления двух окон с одинаковыми заголовками, соответствующими твоим.


 
seamcat   (2005-05-28 23:10) [14]

Огромное спасибо! Я пробовала функцию GetNextWindow, но она не помогла... Надеюсь это поможет


 
anton2v   (2005-05-31 17:34) [15]

при запуске любого процесса из своего процесса на выходе или в одном из параметров функции ты получишь дискриптор дочернего процесса


 
seamcat   (2005-05-31 21:40) [16]

Мне нужены были именно дискрипторы окон. Но решение проблемы оказалось неожиданным. Достаточно было воспользоваться фун-ей FindWindow, только дождавшись, когда создание нового процесса закончиться...



Страницы: 1 вся ветка

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

Наверх




Память: 0.5 MB
Время: 0.053 c
1-1121173494
ANB
2005-07-12 17:04
2005.07.31
Как достать список методов объекта ?


14-1120816424
DiamondShark
2005-07-08 13:53
2005.07.31
Тяжёлое детство, деревянные игрушки


3-1118252501
Lexa
2005-06-08 21:41
2005.07.31
Could not convert variant of type (Null) into type (String)


11-1103720327
ECM
2004-12-22 15:58
2005.07.31
FAQ от Gandalf-a (KOL.MASTAK.RU)


3-1119618887
vok
2005-06-24 17:14
2005.07.31
Название поля