在QT for Windows中使用Win32 API
Using Win32 API in QT for Windows
我正在从.net C#迁移到QT C++,我正试图使用此Win32函数来模拟QT:中的驱动器
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool DefineDosDevice(int flags, string devname, string path);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int QueryDosDevice(string devname, StringBuilder buffer, int bufSize);
上面的代码在C#中,但我不知道如何在QT中使用它们,有人可以给我一个例子,如何做到这一点,以及如何在QT使用任何Win32 API?
查看DefineDosDevice和QueryDosDeview的文档,您会在底部的表中看到它们都在"kernel32.lib"库中定义,并在"Windows.h"中声明(间接)。
在您的代码中,您应该#include <Windows.h>
:然后您将能够直接调用它们。
我不确定你的特定编译器/IDE,但如果你在链接时收到关于"未解析引用"的错误,你可能需要将"kernel32.lib"(来自Windows SDK)添加到你的库路径中。
感谢您的回答!我的问题的答案是:
#include <Windows.h>
void MainWindow::on_pushButton_clicked()
{
QString qstr1 = "Z:";
QString qstr2 = getenv("tmp");
DefineDosDevice(0, (LPCTSTR)qstr1.utf16(), (LPCTSTR)qstr2.utf16());
}
void MainWindow::on_pushButton_2_clicked()
{
QString qstr = "Z:";
DefineDosDevice(2, (LPCTSTR)qstr.utf16(), 0);
}
在.h或.cpp文件中添加#pragma注释(lib,"user32")
您可以使用win32API作为常规C函数。QT和其他C++程序没有区别。
相关文章:
- C++win32 API创建多个类似视口的窗口
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- Win32 API 控制台光标在 WriteConsole 后不移动
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- 调用 Win32 API 函数时未定义的引用
- Visual C++ Win32 API 代码来拦截某个击键
- 消息框在WM_COMMAND内不起作用!(WIN32 API)
- 使用WIN32 API的击球平均计算器
- 在使用 c++ 的 win32 api 中,我想跟踪双击和三次单击等
- SDL2 + Win32 API 菜单栏单击事件不起作用
- WM_PAINT和鼠标事件.MFC/WIN32 API.
- 我可以在没有C++的情况下学习 Win32 API(仅使用 C)吗?
- 如何检查 win32 exe 文件是否已运行?(使用 win32 API 代码)
- 在 Win32 API 中使用多线程
- 如何使用 Win32 API 从 Excel VBA 中的非"Single-Threaded Apartment"线程调用 InternetGetProxyInfo
- 引发访问冲突的 Win32 API 调用
- C Win32 API在按钮区域内通知鼠标
- 删除并清除组合框 Win32 API 中的所有项目
- 如何使用Win32 API阻止来自透明窗口的鼠标输入?
- 如何将选项卡添加到我的选项卡控件(WIN32 API C++ GUI)