现有一个C#实现的B/S结构的OA办公自动化系统,已经正常投入使用了,又有一个VC++实现的小型即时聊天软件,有服务器端和客户端两部分,服务器端连接数据库,客户端直接连接服务器端,登录方式是客户端将用户名和密码发往服务器端,由服务器端查找数据库进行比较,并将比较结果发回给客户端进而判断登陆是否成功。如果不成功则返回,成功则跳转到主面板。
如果我将这两个系统的数据库合成一个,怎样可以实现在登录OA的同时将此聊天软件也登陆上呢?
要求聊天软件的登陆界面不显示,在OA登陆界面中输入用户名密码,点击登录就同时执行聊天软件的登录过程,登陆成功后出现OA主界面并将聊天软件最小化到托盘。效果跟登陆校内网的同时也一起登陆校内通相似。
请有经验的大侠指教一下具体实现方法,也请大家提供一下意见,多多益善!!!
如果我将这两个系统的数据库合成一个,怎样可以实现在登录OA的同时将此聊天软件也登陆上呢?
要求聊天软件的登陆界面不显示,在OA登陆界面中输入用户名密码,点击登录就同时执行聊天软件的登录过程,登陆成功后出现OA主界面并将聊天软件最小化到托盘。效果跟登陆校内网的同时也一起登陆校内通相似。
请有经验的大侠指教一下具体实现方法,也请大家提供一下意见,多多益善!!!
2.2写COM组件供OA页面调用。此组件功能为启动聊天软件。
2.2 OA登录页面后,调用COM组件启动聊天软件。
不知你现在的两个应用使用的用户使一个吗?是的话直接把OA登录时用户输入用户名密码传过去就行。
如果不是一个用户那就需要在服务器端加接口了。2.传用户名、密码到聊天软件:
方式1:启动参数,例如: im.exe "username" "password" 在程序中再解析启动参数。
方式2:共享内存,把需要传的数据使用共享内存传过去。我的博客中用直接可以用的共享内存类。
上面两个方式都是COM传给聊天软件的。
你的聊天程序就是一个EXE吧。
那使用CreateProcess或WinExec都可以启动吧。聊天程序接口:
方法1:
启动参数形式
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
第三个参数可以解析外部传入的启动参数lpCmdLine方法2:
使用共享内存的话,也是在调用前创建共享内存,填写数据。然后启动聊天程序,在聊天程序的main函数里边读取共享内存。
FLASH 改成类QQ还是很容易的,视频,音频,采集都是集成函数的,简单调用一下就可以了
1.在OA验证结束后,启动IM进程,将IM登录界面隐藏。
2.FindWindow() 查找出IM登录窗口句柄。
3.FindWindowEx() 查找出相关的用户名和密码还有登录按钮的相关句柄。
4.将OA的用户名和密码信息填写到相应的句柄,然后对登录按钮发送 BN_CLICK消息实现登录。(先测试能不能用SetWindowText()设置,如果IM有保护的话,那么需要用考虑用WriteProcessMemory()或远程子类化或钩子的方式实现)。
5.IM登录成功, 假设IM程序有最小到托盘的功能,查找IM主窗口,发送最小化消息。 如果IM不支持托盘程序,那么你就需要远程子类化,自己实现一个托盘功能的DLL。三、假设你连OA的源码都没有
1. 自己写一个启动OA的程序,启动OA进程
2. 远程子类化OA进程的启动界面,拦截登录按钮的BN_CLICK的处理结果,判断登录是否成功,成功进行<二>
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
同意上面的合成一个数据库又不是一张表,对吧,这个不是问题,问题是你的OA系统的用户密码和IM的用户密码是不是相同的,相同就可以用上面的方法,不相同可以把两张表关联一下,后面的操作也和上面一样