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

Вниз

Получить текст текущего окна на 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1094729589
kand
2004-09-09 15:33
2004.09.26
Кто нить юзает MDaemon?


14-1094756012
dimodim
2004-09-09 22:53
2004.09.26
Есть ли ХРвин 2 сп


1-1094633769
Jay
2004-09-08 12:56
2004.09.26
MainMenu


4-1092832619
lightix
2004-08-18 16:36
2004.09.26
Получить имя пользователя Win2k


3-1093500641
Zhekson
2004-08-26 10:10
2004.09.26
Корректный выход из программы





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