关于iKey的使用疑问(300分)

  • 主题发起人 主题发起人 萧月禾
  • 开始时间 开始时间

萧月禾

Unregistered / Unconfirmed
GUEST, unregistred user!
在一项目中要使用iKey(插在USB上类似钥匙的东西)作为用户身份的验证
在一些处理上要在iKey在USB口“插上”和“取下”这二个事件中进行
但它本身提供的函数和方法并未提供这样的事件处理
请问如何能在程序中获得这二个事件发生的消息?
 
不好意思不会,
 
最简单但最愚蠢的办法就是用一个线程检测iKey的状态 [:)]
可能Windows会有这方面的事件或消息通知吧? 不过我没研究过
因为象USB硬盘等USB外设接上去的时候Windows都能即时感知的
 
不清楚,但是Windows应该是有消息发送过来的。
 
你这个涉及到USB口的通信技术吧,关于USB的现在还算是技术,我们部门有这资料但是我拿不到,
他们是用VC来做的。你残了,晓月,找个关系比较铁的兄台问问吧
 
>>在一些处理上要在iKey在USB口“插上”和“取下”这二个事件中进行
我想可能要通过系统消息了。
呵呵,换个思路:
用个BUTTON,点击BUTTON我才“插上”和“取下”。
 
晕,我才把这功能作为“系统特性”加到文档里
要是做不到,怎么“特”呀[:(]

当它“插上”和“取下”的时候应该会发一消息到windows的罢
关键在于怎么获得这个消息?(无奈这也是我能力薄弱的一个环节)

兄弟们帮忙呀~~~
 
晕,我也晕,不会,UP
 
用WinSight能捕捉到吗?
 
建议你装全了驱动程序以后试试用winsight捕捉到插上和取下的消息,
我用的优盘就是驱动程序的,你可以自己在程序中捕捉一下.

//只能提些建议,也没有在项目中做过.关注此题.
 
用SPY++看看就知道了.

WM_DEVICECHANGE

剩下来的你仔细看看就知道罗..嘿嘿..:)
 
同意forss的观点。
但是在USB设备PNP的时候,会多次产生WM_DEVICECHANGE消息.
可以用布尔变量来加以控制.

------------以下VC代码来自bbear----------------------
afx_msg BOOL CMainFrame::OnDeviceChange( UINT nEventType, DWORD dwData )
{
// process whatever you want , nEvenType : 可知 removed or add
return 1;
}

2. add to message table(mainfrm.cpp). ON_WM_DEVICECHANGE()

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_DEVICECHANGE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

3. mainfrm.h -> add to function table.

//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );
//}}AFX_MSG


 
我已经搞定了,因为要考虑到各种版本的window上使用
采用了用一个线程在短时间间隔内判断iKey的状态
再配合几个标记变量还进行
 
呵呵,看来还是佛山无影脚快呀,非常同意。我也是刚刚做好的。
 
多人接受答案了。
 
后退
顶部