Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
6-1114320808
X-Disa
2005-04-24 09:33
2005.07.31
TIdHTTP - прервать получение


14-1120663340
-=[ASH]=-
2005-07-06 19:22
2005.07.31
Серийные номера


4-1117626873
AlexTregubov
2005-06-01 15:54
2005.07.31
Как нарисовать рамку вокруг TEdit?


4-1117814871
MANIAC_K
2005-06-03 20:07
2005.07.31
Перехват сообщения...


1-1120813858
Shlomo
2005-07-08 13:10
2005.07.31
ClientDataSet: проблема с Lookup полем.





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