hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 731|回复: 4

DLL 中如何检测调用者是 GUI or Console?

[复制链接]

498

主题

498

帖子

1524

积分

大司空

Rank: 5Rank: 5

积分
1524
发表于 2024-3-4 20:51:10 | 显示全部楼层 |阅读模式
在 DLL 中如何检测调用 AP 是图形界面还是命令行模式?
先仅限于 windows (WIN32 及 WIN64)操作系统。
回复

使用道具 举报

0

主题

200

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-3-4 20:51:55 | 显示全部楼层
搜到一英文网站:How to detect console vs GUI mode from a DLL,里面介绍了两种方案:
  1. #include <windows.h>#include <tchar.h>int main(){    char *base = (char*)GetModuleHandle(0); // "returns a handle to the file used to create the calling process (.exe file)."    IMAGE_DOS_HEADER *idh = (IMAGE_DOS_HEADER*)(base+0);    IMAGE_FILE_HEADER *ifh =(IMAGE_FILE_HEADER*)(base+idh->e_lfanew+sizeof(DWORD));    IMAGE_OPTIONAL_HEADER *ioh =(IMAGE_OPTIONAL_HEADER*)(base+idh->e_lfanew+sizeof(DWORD)+sizeof(IMAGE_FILE_HEADER)) ;    //    const TCHAR *subsystem=0;    switch (ioh->Subsystem)    {        case IMAGE_SUBSYSTEM_UNKNOWN: subsystem=_T("unknown"); break;        case IMAGE_SUBSYSTEM_NATIVE: subsystem=_T("native"); break;        case IMAGE_SUBSYSTEM_WINDOWS_CUI: subsystem=_T("console"); break;        case IMAGE_SUBSYSTEM_WINDOWS_GUI: subsystem=_T("windows"); break;        case IMAGE_SUBSYSTEM_OS2_CUI: subsystem=_T("os2"); break;        case IMAGE_SUBSYSTEM_POSIX_CUI: subsystem=_T("posix"); break;        case IMAGE_SUBSYSTEM_WINDOWS_CE_GUI: subsystem=_T("ce"); break;        case IMAGE_SUBSYSTEM_XBOX: subsystem=_T("xbox"); break;        default: subsystem=_T("???");    }    MessageBox(0,subsystem,subsystem,MB_OK);    return 0;}
复制代码
以及:
  1. if(!GetConsoleTitle(NULL, 0) && GetLastError() == ERROR_SUCCESS) {// CUI} else {// GUI}
复制代码
回复

使用道具 举报

0

主题

197

帖子

66

积分

关内侯

Rank: 2

积分
66
发表于 2024-3-4 20:52:20 | 显示全部楼层
windows API 我不了解。
如果是自己写的dll的话,倒很简单,添加一个变量或者函数来指明状态即可
回复

使用道具 举报

0

主题

191

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-3-4 20:52:59 | 显示全部楼层
DLL 是被调的,它是被动的,如何给这个变量赋值?
这需要自动侦测的。
回复

使用道具 举报

0

主题

160

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-3-4 20:53:50 | 显示全部楼层
呵呵,俺不清楚具体是什么dll,不知道dll在这个问题中的角色~~
除了表示关注之外帮不了什么忙了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-5-8 23:37 , Processed in 0.054142 second(s), 21 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表