windows程序设置中的#pragma语句

    在windows程序设计中,#pragma 语句被广泛使用,如使用#pragma语句链接一个库、使用#pragma语句给本程序或者本动态链接库添加一个“节”,然后将这个节设置属性(可读、可写、共享等)。

    在MSDN当中,可以输入 #pragma 查询到  #pragma语句的用法,一般为           #pragma token-string,其中token_string可以为以下字符串:

alloc_textcommentinit_seg1optimize
auto_inlinecomponentinline_depthpack
bss_segdata_seginline_recursionpointers_to_members1
check_stackfunctionintrinsicsetlocale
code_seghdrstopmessagevtordisp1
const_seginclude_aliasoncewarning

 

然后,这里的每个字符串又有其自己的用法,在MSDN当中有详细说明。

#include "mainwindow.h" #include <QApplication> #include <windows.h> #include <wtsapi32.h> #pragma comment(lib, "Wtsapi32.lib") int main(int argc, char *argv[]) { QApplication a(argc, argv); HANDLE hToken = NULL; DWORD dwSessionId = WTSGetActiveConsoleSessionId(); if (!WTSQueryUserToken(dwSessionId, &hToken)) { QMessageBox::warning(nullptr, QStringLiteral("错误"), QStringLiteral("获取用户令牌失败!")); return -1; } HANDLE mutex = ::CreateMutex(Q_NULLPTR,true,(LPCWSTR)qApp->applicationName().toStdWString().c_str()); if(GetLastError() == ERROR_ALREADY_EXISTS) { QMessageBox waringBox(QMessageBox::Warning,QStringLiteral("警告"),QStringLiteral("程序[文本数据同步客户端]只能运行一个!")); waringBox.setButtonText(QMessageBox::Ok,QStringLiteral("确定")); waringBox.setStandardButtons(QMessageBox::Ok); waringBox.exec(); ::CloseHandle(mutex); CloseHandle(hToken); // 添加关闭句柄语句 return 0; } else { ::ReleaseMutex(mutex); } STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); si.lpDesktop = (LPWSTR)L"winsta0\\default"; PROCESS_INFORMATION pi; ZeroMemory(&pi, sizeof(pi)); if (!CreateProcessAsUser(hToken, NULL, (LPWSTR)qApp->applicationFilePath().toStdWString().data(), NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) { QMessageBox::warning(nullptr, QStringLiteral("错误"), QStringLiteral("创建进程失败!")); CloseHandle(hToken); return -1; } CloseHandle(hToken); MainWindow w; w.show(); return a.exec(); } 以上是限制程序windows Server2016系统多个用户界面也只能运行一个程序的QT C++代码,: 但是如果在windows Server2016系统两个用户界面可同时运行程序。 在还未有程序运行时,运行第一个也会直接提示 "获取用户令牌失败!",程序直接关闭,请帮我修复后给我完整代码
最新发布
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值