簡體   English   中英

在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?

查看DefineDosDeviceQueryDosDevice的文檔,您將在表格底部看到它們都在“kernel32.lib”庫中定義,並在“Windows.h”(間接)中聲明。

在你的代碼中,你應該#include <Windows.h> :然后你就可以直接調用它們了。

我不確定您的特定編譯器/ IDE,但如果您在鏈接時遇到有關“未解析的引用”的錯誤,則可能需要將“kernel32.lib”(來自Windows SDK)添加到庫路徑中。

您可以將win32 API用作常規C函數。 QT和其他C ++程序沒有區別。

謝謝你的回答! 我的問題的答案是:

#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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM