C#托盘程序咨询

dzh_lin 2011-10-08 05:16:25
各位大侠
我想问一下C#怎么实现监视所有的鼠标键盘事件?
即使是当前程序最小化的的情况下,也可以记录对其他软件的鼠标单击事件。

...全文
199 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dzh_lin 2012-11-02
谢谢各位大侠~小弟试试~
回复
fsk_wyf 2012-04-10

DEBUGLOG("j7(): Copy one sendqueueitem to writebuffer "<< z4 << " byte.");DELETE_A(pTemp->pMessage);
DELETE(pTemp);} else //如果缓冲区不够放,那把节点消息部分放入缓冲区 {
memcpy(&m_writeBuf[m_writeEnd], pTemp->pBeginWritePos, iTmpBufSize);//修改队列节点的写长度和写指针
z4 -= iTmpBufSize; pTemp->pBeginWritePos += iTmpBufSize; m_writeEnd = MaxWriteBuf;
DEBUGLOG("j7(): Copy the sendqueueitem to writebuffer " << z4 << " byte, Buffer is fulled.");
break; }} // end of while (1) 这个循环数据流向是从发送队列到发送缓冲区
//发送队列空并且发送缓冲区没有数据,跳出循环 if ((NULL == pTemp) && (m_writeEnd <= m_writeBegin))
{ break;}} //end of while (1)return;}
//TSocket功能函数,清空写缓冲区中的数据
void TSocket::clearWriteBuf(){//初始化写参数 memset(m_writeBuf, 0, MaxWriteBuf);
m_writeBegin = 0; m_writeEnd = 0; return;}
//TSocket功能函数,清空读缓冲区数据
void TSocket::clearReadBuf(){y7 = y6;y8 = 4; //消息头四字节是长度y9 = y5;
j1 = 0; memset(m_readBuf, 0, MaxReadBuf);z3 = 0; m_readEnd = 0; return;}
//TSocket功能函数,关闭套接字连接
void TSocket::y2{if (m_fdSocket >= 0){ close(m_fdSocket); } m_fdSocket = -1; m_state=Close; return;}
//TSocket功能函数,设置套接字名称
void TSocket::setSocketName(char* socketName){ if (NULL != socketName){
strncpy(m_sSocketName, socketName, 79); }return;}
//TSocket功能测试函数,打印对象的全部成员变量到日志文件
void TSocket::dump(HOfstream& tOutStream){char l_sBuf4Print[65536];tOutStream.reopen();
sprintf(l_sBuf4Print, "m_remoteAddr.sin_family :%d\n", m_remoteAddr.sin_family);
y1;格式同上 m_remoteAddr.sin_port); y1;.. m_remoteAddr.sin_addr.s_addr); y1;.. m_remoteAddr.sin_zero);
y1;.. m_localAddr.sin_family);y1;..m_localAddr.sin_port);y1;..m_localAddr.sin_addr.s_addr);y1;
.. m_localAddr.sin_zero);y1;.. m_fdSocket);y1;..m_state); y1; ..y6);y1;..y6); y1;..y7); y1;..y8); y1;
..y9);y1; ..j1);y1;..m_readBuf);y1;..z3);y1;..m_readEnd);y1;..m_writeBuf); y1;.. m_writeBegin);y1;
..m_writeEnd);y1;..z7); y1; ..z6);y1; ..z5); y1;..m_sSocketName); y1; tOutStream.close();}
//TSocket功能测试函数,打印发送队列成员到日志文件
void TSocket::dumpSendQueue(HOfstream& tOutStream){
WRITELOG(tOutStream, "This is socket[" << m_sSocketName << "] send queue[itemnumber:" << z5
<< " ] informaiton");TQueueItem* pItem = z7; int iItemOrder = 1;while (NULL != pItem){
WRITELOG(tOutStream, "-------- QueueItem number " << iItemOrder++ << " -------"); printCodeBuff(
pItem->pMessage, pItem->msgLength, tOutStream); pItem = pItem->next; }}
回复
C#写托盘程序 还是比较简单的
我记得有一个nofity控件,
拖一个放到窗体上,
然后把窗体的showintaskbar设为false,
把窗体启动时状态改为最小化,
就可以了,
至于你说的要记录单击,这个,
估计得走底层了,
找下win32编程看看windows有没有提供API?
回复
gzw13999 2012-03-15
c# 搞这个能力有限啊。 还不如E语言。
回复
zhouxingyu896 2011-12-19
支持楼上的
楼主可以下载这个键盘钩子,要不楼主自己写钩子程序呢
回复
CalvinWang 2011-10-08
Processing Global Mouse and Keyboard Hooks in C#
http://www.codeproject.com/KB/cs/globalhook.aspx
回复
相关推荐
发帖
.NET技术其他语言
创建于2007-09-28

1831

社区成员

.NET技术 其他语言讨论
申请成为版主
帖子事件
创建了帖子
2011-10-08 05:16
社区公告
暂无公告