Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Эдель Гость
|
Добавлено: Пт Авг 20 2004 11:01 Заголовок сообщения: WinAPI |
|
|
Здравствуйте, уважаемые!
Пара моих ламерских вопросов
У меня не работает код на С++
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char buffer;
int wint=GetWindowText(GetNextWindow(GetTopWindow(GetDesktopWindow()),GW_HWNDPREV),&buffer,25);
if (wint=0) Close();
ListBox1->Items->Add(buffer);
}
причину я не знаю, может подскажете |
|
Вернуться к началу |
|
|
Эдель Гость
|
Добавлено: Пт Авг 20 2004 11:13 Заголовок сообщения: |
|
|
Ошибка
Строчку с if..... я удалил, поставил выдачу значения wint
Он мне выдал значение 0, хотя у меня было несколько разных приложений запущенно |
|
Вернуться к началу |
|
|
FUKS
Зарегистрирован: 14.04.2002 Сообщения: 148 Откуда: Москва
|
Добавлено: Пт Авг 20 2004 14:40 Заголовок сообщения: Re: WinAPI |
|
|
Не работает - в смысле текст не гетает? С параметрами функции разбираться лень, надеюсь, что логически там всё правильно, а вот
char buffer;
это ОДИН байт, в него много текста не войдёт, только \0 в конце.
char buffer[25]; // Лучше так |
|
Вернуться к началу |
|
|
Эдель Гость
|
Добавлено: Сб Авг 21 2004 09:34 Заголовок сообщения: |
|
|
Пишет:
cannot convert char (*)[25] to char *
Хотя я * в обьявлении чара не ставил |
|
Вернуться к началу |
|
|
RealMode
Зарегистрирован: 26.04.2004 Сообщения: 21
|
Добавлено: Сб Авг 21 2004 20:15 Заголовок сообщения: |
|
|
Нужно объявить именно как char * , т.к. параметр buffer должен быть строкой. Вот посмотри на объявление функции:
int GetWindowText(
HWND hWnd, // handle of window or control with text
LPTSTR lpString, // address of buffer for text <---- указатель на строку
int nMaxCount // maximum number of characters to copy
); |
|
Вернуться к началу |
|
|
GeX
Зарегистрирован: 03.01.2004 Сообщения: 60 Откуда: Россия, Иркутск
|
Добавлено: Пн Авг 23 2004 09:57 Заголовок сообщения: |
|
|
пиши не &buffer, а просто buffer |
|
Вернуться к началу |
|
|
GeX
Зарегистрирован: 03.01.2004 Сообщения: 60 Откуда: Россия, Иркутск
|
Добавлено: Пн Авг 23 2004 09:59 Заголовок сообщения: |
|
|
и 25 байтов для заголовка окна это явно мало, по хорошему надо сначала кол-во байтов получить функцией GetWindowTextLength, а потом динамически выделять память malloc-ом, ну или другой функцией выделения памяти из кучи. |
|
Вернуться к началу |
|
|
Эдель Гость
|
Добавлено: Ср Авг 25 2004 10:08 Заголовок сообщения: |
|
|
Спасибо, попробую.
А каким образом можно получит хэндл менюшки, которая выскакивает при нажатии правой кнопки мыши в Виндоусе и контролировать, какой пункт выделен, какой выбран и т.д. |
|
Вернуться к началу |
|
|
|