Главная страница
    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.48 MB
Время: 0.041 c
4-1117805575
ctranik
2005-06-03 17:32
2005.07.31
RegEnumKeyEx непоказывает все подключи,


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


4-1117945682
QAndrey
2005-06-05 08:28
2005.07.31
Icon в меню


14-1120565584
Vlad Oshin
2005-07-05 16:13
2005.07.31
вторничная задачка. Угадыватель.


14-1120534822
Starcom
2005-07-05 07:40
2005.07.31
Присоеденительные файлы!





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