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

Вниз

Получить текст текущего окна на Delphi.   Найти похожие ветки 

 
jeon ©   (2004-08-08 18:53) [0]

У меня 7-я версия делфи. Не могу получить текст текущего окна. Мне пишет, что в библиотеке user32.dll нету функции GetWindowText (!!!). Проделал то же самое на VB – работает. Может я где в коде ошибку допустил. Помогите плиз. Вот мой код (начиная с объявления API:

implementation
function GetWindowText(Wnd: HWnd; Str: PChar; MaxCount: Integer): Integer;
stdcall; external "user32.dll";

function GetWindowTextLength(Wnd: HWnd): Integer;
stdcall; external "user32.dll";
{$R *.dfm}

function GetForegroundWindow():Integer;
stdcall; external "user32.dll";

procedure TForm1.Button1Click(Sender: TObject);
var s:pchar;
res,buf:integer;
hnd:integer;

begin
hnd:=getforegroundwindow();
buf:=getwindowtextlength(hnd);
res:=getwindowtext(hnd,s,buf);
edit1.text:=s;
end;


 
panov ©   (2004-08-08 19:01) [1]

Перед тем, как добавлять ветки в форум, надо правила почитать.
(Это о попытках задать один вопрос в несколько конференций)


 
KSergey ©   (2004-08-08 21:05) [2]

Может вместо собственных лбъявлений взять да и написать
uses Window;


 
KSergey ©   (2004-08-08 21:06) [3]

или
uses Windows;

Что-то запамятовал :)


 
Sergey Kaminski ©   (2004-08-08 21:18) [4]

А там нет такой функции. Там есть такие:
GetWindowTextA,GetWindowTextW


 
Cobalt ©   (2004-08-08 23:36) [5]

2 Sergey Kaminski ©   (08.08.04 21:18) [4]
Наглые враки!!!
Borland Delphi 7.0 Enterprise Vesion 7.0 (Build 4.453)
Windows.pas:

{$EXTERNALSYM GetWindowText}
function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; stdcall;
{$EXTERNALSYM GetWindowTextA}
function GetWindowTextA(hWnd: HWND; lpString: PAnsiChar; nMaxCount: Integer): Integer; stdcall;
{$EXTERNALSYM GetWindowTextW}
function GetWindowTextW(hWnd: HWND; lpString: PWideChar; nMaxCount: Integer): Integer; stdcall;


 
Kirill35   (2004-08-08 23:44) [6]

не надо ничего явно вызывать из библиотек

procedure TForm1.Button1Click(Sender: TObject);
var Text: array [0..255] of Char;
 Handle: HWnd;
    Cap: String;
begin
Handle := GetForegroundWindow;
GetWindowText(Handle, Text, 255);
Cap := StrPas(Text);
ShowMessage(Cap);
end;


 
VMcL ©   (2004-08-09 00:52) [7]

>>Cobalt ©  (08.08.04 23:36) [5]

>2 Sergey Kaminski ©  (08.08.04 21:18) [4]
>Наглые враки!!!

Щас LMD получишь. Смотри свой же пост. Нет в этой DLL никакой GetWindowText, а есть GetWindowTextA и GetWindowTextW.


 
Cobalt ©   (2004-08-09 01:22) [8]

а вот MSDN чё-то не нашёл мне ничего :(
И вообще знает только эту функцию:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/wind owreference/windowfunctions/getwindowtext.asp


 
Sergey Kaminski ©   (2004-08-09 03:06) [9]

2 Cobalt ©

Что-то мне сложно понять Ваши доводы.
Кстати, "эта" функция есть даже в Win32.hlp, не то что в MSDN (в MSDN тоже, разумеется,есть).

Вы не туда смотрели. Нужно смотреть какие имена импортиртирует из dll:

function GetWindowText; external user32 name "GetWindowTextA";
function GetWindowTextA; external user32 name "GetWindowTextA";
function GetWindowTextW; external user32 name "GetWindowTextW";

А не под какими они в интерфейс-секции указаны.

А чтобы впредь избежать подобных заявлений, советую самостоятельно разобраться что это за "A" & "W". И почему нет GetWindowText.
Сказано не со зла, просто совет.


 
VMcL ©   (2004-08-09 10:57) [10]

>>Cobalt ©  (09.08.04 01:22) [8]

Windows 95/98/Me: GetWindowTextW is supported by the Microsoft® Layer for Unicode (MSLU). To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.

...

Implemented as Unicode and ANSI versions on Windows NT, Windows 2000, Windows XP


Отсюда соотвествующий вывод.


 
Sergey Kaminski ©   (2004-08-10 02:27) [11]

VMcL ©   (09.08.04 10:57) [10]

Это было домашнее задание Cobalt"а :))))


 
Cobalt ©   (2004-08-10 12:37) [12]

2 VMcL ©   (09.08.04 10:57) [10]
Хм, интересно, откуда ты это раскопал?
я ни в SDK Reference, ни в MSDN не нашёл
А насчёт функций A/W я знал :)

2 Sergey Kaminski ©
Я имел в виду что она (функция) есть в модуле Windows.pas.
А вот в MS SDK Help Files в Win32.hlp я этого (GetWindowTextA/W) не нашёл (D7)


 
VMcL ©   (2004-08-10 13:08) [13]

>>Cobalt ©  (10.08.04 12:37) [12]

>Хм, интересно, откуда ты это раскопал?

В MSDN.

>А вот в MS SDK Help Files в Win32.hlp я этого (GetWindowTextA/W) не нашёл (D7)

Само собой. В Help"е - GetWindowText(). А поскольку есть две версии ANSI и Unicode, то значит реальные имена GetWindowTextA и GetWindowTextW.



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

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

Наверх




Память: 0.49 MB
Время: 0.039 c
14-1094452637
YurikGL
2004-09-06 10:37
2004.09.26
Файрволл и авторизация


14-1094333382
olookin
2004-09-05 01:29
2004.09.26
Как смертник скребет по бумаге...


3-1093511511
gonzales
2004-08-26 13:11
2004.09.26
Хитрый запрос


9-1085601029
GuAV
2004-05-26 23:50
2004.09.26
TBitmap поверх DirectX


1-1094940046
Davinchi
2004-09-12 02:00
2004.09.26
Как получить Hendle DLL