Russian Qt Forum
Ноябрь 24, 2024, 22:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызов WinAPI функций  (Прочитано 4669 раз)
hanabad
Гость
« : Июль 04, 2012, 14:33 »

Привет форумчане. Не подскажите как в Qt вызываются WinAPI функции и как вообще
нужно импортировать dll-ки. Я недавно програмлю на С++ (пытаюсь слезть с NET).
Если можно с кодом, например в C# было так:
Код:
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, int len, int st);
//...
var inp = FindWindow("Notepad++", null);
inp = FindWindowEx(inp, IntPtr.Zero, "Scintilla", null);
SendMessage(inp, 0x102, 'H', 0);
а как это сделать в Qt?
Записан
V1KT0P
Гость
« Ответ #1 : Июль 04, 2012, 14:36 »

Под MinGW достаточно написать:
Цитировать
#include <windows.h>
И все, можно использовать все апишные функции.
Записан
hanabad
Гость
« Ответ #2 : Июль 04, 2012, 14:52 »

А с Qt libraries 4.8.2 for Windows (VS 2008, 234 MB) как быть? а то пишет:
Код:
main.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ __imp__FindWindowExW@16 в функции _main
Записан
CJ1
Гость
« Ответ #3 : Июль 04, 2012, 15:26 »

#pragma comment(lib,"kernel32.lib");
#pragma comment(lib,"user32.lib");
#pragma comment(lib,"gdi32.lib");
#pragma comment(lib,"winspool.lib");
#pragma comment(lib,"comdlg32.lib");
Записан
hanabad
Гость
« Ответ #4 : Июль 04, 2012, 15:47 »

CJ1, спасибо работает! Только пишет предупреждения:
Код:
E:\SkyDrive\Programming\QtProjects\Search\main.cpp:47: предупреждение: C4081: требуется "newline"; обнаружен ";""
Записан
CJ1
Гость
« Ответ #5 : Июль 04, 2012, 15:49 »

Ой, блин, убери от всех #pragma comment(lib,""); точку с запятой
#pragma comment(lib,"")

Записан
hanabad
Гость
« Ответ #6 : Июль 04, 2012, 15:54 »

Ой, блин, убери от всех #pragma comment(lib,""); точку с запятой
#pragma comment(lib,"")
Да, так лучше(не действует на нервы Смеющийся), еще раз СПАСИБО!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.041 секунд. Запросов: 20.