Форум: "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