为什么我获得桌面窗口句柄的img的句柄为null???

labview错误原因:传递空引用句柄作为输入。请问该怎么解决啊?_百度知道后使用快捷导航没有帐号?
查看: 9809|回复: 20
如何获取已经打开的串口句柄?
在线时间2 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
& & 各位,如何获取已经打开的串口句柄?
& & 望执教!
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
??CreateFile()返回的不就是句柄么?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
如果串口已经打开,使用CreateFile()也一样会返回INVALID_HANDLE_VALUE。
要对已经打开,但是还没有获取到串口句柄的串口进行操作,用什么办法?
同样关注。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
LZ不会是想在进程之间传递句柄吧?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
个人感觉,做一个全局变量,然后使用函数提取这个变量,应该是可以的
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
不是,我没有把意图说明白。
我想测试串口,把测试信息发送到PC上
我使用usb转串口线,引出一个串口,usb转串口线一端连接pc的usb口,另一端连接mobile
但是当我用HANDLE hPort = CreateFile(_T(&COM12:&),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);
打开串口失败,返回INVALID_HANDLE_VALUE。
我想应该是usb转串口的过程,默认已经打开占用了串口,所以才返回INVALID_HANDLE_VALUE。
请教一下,如何处理这种情况呢?望指教
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
usb转串口成功了吗?
默认是不会占用串口的。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 6 楼 91program 的回复:
usb转串口成功了吗?
默认是不会占用串口的。
转是转成功了,因为可以从PC上看到多了一个COM口
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
下面的代码也是在PC上运行吗?
HANDLE hPort = CreateFile(_T(&COM12:&),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
如果我连接一个空闲的COM口,这段代码是没有问题的。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 8 楼 91program 的回复:
下面的代码也是在PC上运行吗?
HANDLE hPort = CreateFile(_T(&COM12:&),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);
如果能获取到这个串口的句柄,那一切应该都迎刃而解了。。。。。。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
继续望指教。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
串口是程序独占性的访问,如果有其他程序打开了该串口,你就不能够继续使用了,所以知道句柄意义不大。我估计你的问题是USB转串口的驱动安装不正确,或者你打开的串口号不正确。你可以按以下思路定位问题:
1、写个程序或者找个软件扫描一下所有串口的端口,看能否找到你的设备;
2、不行的话可先测试一下你这个USB转串口线是否正常工作,找个正常的串口设备连接上,让它不停发送数据,你在PC端用超级终端之类软件来测试是否能收到。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
USB转串口线应该能正常工作,因为在程序中有printf打印一个字符串,使用PC端的串口查看软件能看到向这个字符串,也就是说USB转串口线是成功,并且是连通的。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
也就是说PC端的串口查看工具可以正常打开该端口,而你的程序打开同一个端口却失败,是吗?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
之前是对串口通信的机制不理解,重新阐述一下问题。
我用一条usb转串口的线,把PC的usb口引出一个串口,然后和mobile的串口线相接,在mobile端向与mobile外设连接的串口发送数据,然后希望在PC端能显示出发送的数据。CreateFile()连接成功,发送数据WriteFile()也成功了,但是在PC端的串口监控程序不能检测到我写入的数据,单步调试时读到的是一大串乱码。
后面我下载了一个mobile端的用来操作串口的应用程序,同样向相同的串口发送数据,应用程序的数据接收端也只显示一大堆乱码。
我手机OEM就说有四个串口分别COM1,2,3,6,分别对应的UART口是Serial_Modem,Serial_BT(蓝牙),Serial_GPS ,Serial_AGPS。我打开的是COM6(也就是我连接外设的串口)。
在线时间46 小时
威望741 分
TA的帖子TA的资源
纯净的硅(初级), 积分 741, 距离下一级还需 59 积分
纯净的硅(初级), 积分 741, 距离下一级还需 59 积分
现在不知道该怎样做了?
望各位指教。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 10 楼 yongshi128 的回复:
引用 8 楼 91program 的回复:
下面的代码也是在PC上运行吗?
HANDLE hPort = CreateFile(_T(&COM12:&),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);
如果能获取到这个串口的句柄,那一切应该都迎刃而解了。。。。。。
这行代码是不可能打开COM12的,打开10及其以上的COM的时候这样写是不行的,要加个什么什么东西,我忘了.....
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
乱码问题。。两边的流控设没有?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
这个不是关键所在。
我想知道的是,WM中的Serial_Modem对应的COM1能否通过我上述的连接方式和PC进行通信??
还有,上面所说的几个串口一样应用于哪方面的通信?
Powered by
逛了这许久,何不进去瞧瞧?获取打印机句柄后,使用startpage返回值为-1-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
获取打印机句柄后,使用startpage返回值为-1
来源:互联网 发表时间: 13:18:58 责任编辑:鲁晓倩字体:
为了帮助网友解决“获取打印机句柄后,使用startpage返回值为-1”相关的问题,中国学网通过互联网对“获取打印机句柄后,使用startpage返回值为-1”相关的解决方案进行了整理,用户详细问题包括:确认获取了打印机的句柄&&打印机名称也是正确的&&调用startpage(hdc)结果返回值为-1,具体解决方案如下:解决方案1:GetLastError看看解决方案2:引用&1&楼&happyparrot&的回复:GetLastError看看code&6如何解决呢解决方案3:句柄明明获取到了&&PrintName的名字都是指向我的打印机名字解决方案4:打印机接好了吗?
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号怎样判断窗口句柄已经无效(可否使用==NULL)????
[问题点数:100分,结帖人shellworld]
怎样判断窗口句柄已经无效(可否使用==NULL)????
[问题点数:100分,结帖人shellworld]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。VC/MFC(158)
一个EXE加载了一个DLL。我想在DLL中动态的获取DLL本身的实例句柄.有没有什么方法?
我不想使用DllMain中保存全局句柄的方法。
(1) MFC扩展DLL中
int DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) 第一个参数即为DLL句柄
(2)WIN32DLL中
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) 第一个参数即为DLL句柄
WIN32勾选MFC选项的DLL中,要获取DLL句柄,就比较麻烦。
例如:DownLoaderDLLTest.exe中动态加载DownLoaderDLL.dll后,就算在DLL中通过GetModuleHandle()获取的也是exe的句柄,而不是dll的,
&&除非指定dll名称,HMODULE
hDll = ::GetModuleHandle(&DownLoaderWin32MfcDLL.dll&); 这样才可以获取dll模块句柄,
& & & & & 但是,通常条件下我们的模块名称不能写死,
&strong&方法1&/strong&:
注意:TRUE会导致DLL引用计数加1,FALSE不会改变引用计数,通常用FALSE
HMODULE GetCurrentModule(BOOL bRef/* = FALSE*/)
HMODULE hModule = NULL;
if (GetModuleHandleEx(bRef ? GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS : (GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
| GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT),
(LPCSTR)GetCurrentModule, &hModule))
return NULL;
参考:http://blog.csdn.net/yaosan/article/details/3459756
HMODULE GetSelfModuleHandle()
MEMORY_BASIC_INFORMATION
return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0)
? (HMODULE) mbi.AllocationBase : NULL);
附加说明:
GetModuleHandle()与GetModuleHandleEx()
这两个函数都是用于获取&已经映射到调用进程中&的模块的句柄。
1.GetModuleHandle(lpModuleName)
lpModuleName是模块的名称,可以是**.dll或者**.exe,如果没有扩展名,则默认为dll.
如果模块名称通过路径来指定,则路径中必须使用&\&,而不是&/&.
执行时,该函数通过名称(大小写不敏感)来查看调用进程已映射的模块,返回符合的模块句柄。
如果GetModuleHandle(NULL),则返回调用进程本身的句柄。
成功,则返回句柄,失败,返回NULL。错误信息:GetLastError()
GetModuleHandle函数不会增加所指定模块的引用数,也就是说,不管调用该函数几次,只要调用一次FreeLibrary函数,该模块就从进程中卸载了。
在多线程中,模块句柄在不同线程中不总是有效的。如:当在一个线程中调用了该函数获取了某一模块的句柄,但在使用该句柄之前,另一个线程把该句柄&
Free了,并重新获取了其他模块的句柄。这个时候第一个线程再去使用这个句柄变量,就不再是之前它打算操作的那个模块了,而是第二个线程修改后的模块&
2.GetModuleHandleEx(dwFlags, lpModuleName, phModule)
如果是0,则当调用该函数时,模块的引用计数自动增加,调用者在使用完模块句柄后,必须调用一次FreeLibrary
如果是GET_MODULE_HANDLE_EX_FLAG_PIN,则模块一直映射在调用该函数的进程中,直到该进程结束,不管调用多少次FreeLibrary
如果是GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,则同GetModuleHandle相同,不增加引用计数
如果是GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,则lpModuleName是模块中的一个地址
phModule存储要找的句柄。其他都和GetModuleHandle函数相同
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:131589次
积分:4649
积分:4649
排名:第4348名
原创:333篇
转载:44篇
评论:10条
(1)(1)(3)(5)(3)(8)(15)(15)(35)(26)(35)(15)(18)(29)(23)(2)(18)(16)(48)(37)(23)(7)

我要回帖

更多关于 获得桌面窗口句柄 的文章

 

随机推荐