keyboardproc做了一个全局钩子,同时,该dll导出一全局变量,在主调程序中只能得到该全局变量的初始值?该如何处理
keyboardproc做了一个全局钩子,同时,该dll导出一全局变量,在主调程序中只能得到该全局变量的初始值?
我用c++语言,keyboardproc 做了一全局钩子(keyhook.dll),同时,该dll导出一个全局变量 exitflag; 但是在主调程序(控制台应用程序)中,只能得到该全局变量的初始值,不能得到 keyhook.dll处理后的值?部分源代码如下:
控制台主程序生成后,运行,切换至桌面,我按下ctrl+alt+F1,DLL中的那个调试的消息框弹出来,但是,再按Enter,控制台输出的依然是1,不明白,到底怎么调用该 全局变量,或者说有什么别的方法,让我在控制台中,使用那个exitflag?
------解决方案--------------------
大概就是下面这个样子的:
主控程序:
int* i;
GetData(&i); //调用dll中的GetData函数
printf("%d\r\n",*i);
dll:
void GetData(int** i)
{
*i=&exitflag; //将地址指向欲获取的数据的地址
}
------解决方案--------------------
试试这样子定义全局变量。
------解决方案--------------------
http://topic.****.net/u/20120811/08/398b53ac-69d6-4a7a-91d3-29aa2b0a51a5.html
看看这个。
我用c++语言,keyboardproc 做了一全局钩子(keyhook.dll),同时,该dll导出一个全局变量 exitflag; 但是在主调程序(控制台应用程序)中,只能得到该全局变量的初始值,不能得到 keyhook.dll处理后的值?部分源代码如下:
//keyhook.h
#include <Windows.h>
#define DllExport _declspec(dllexport)
extern DllExport int exitflag; //导出的全局变量exitflag,
....
//dllmain.cpp
....
extern int exitflag=1; //变量初始化;
....
//keyproc.cpp
....
case VK_F1:
if(ctrlflag==1 && altflag==1) //如果ctrl,alt都处于按下状态,此时弹起F1;EXITFLAG=1
{ exitflag=0;
MessageBox(NULL,TEXT("dll:exitflag=0 "),TEXT("OK"),0);
}
....
//controlmain.cpp 控制台主程序
....
extern int _declspec(dllimport) exitflag; //在主调进程中,导入那个全局变量exitflag;
....
if(!Installhook())
MessageBox(NULL,TEXT("Install hook fail "),TEXT("OK"),0);
getchar();
printf("%d",exitflag);
getchar();
exit;
....
控制台主程序生成后,运行,切换至桌面,我按下ctrl+alt+F1,DLL中的那个调试的消息框弹出来,但是,再按Enter,控制台输出的依然是1,不明白,到底怎么调用该 全局变量,或者说有什么别的方法,让我在控制台中,使用那个exitflag?
------解决方案--------------------
大概就是下面这个样子的:
主控程序:
int* i;
GetData(&i); //调用dll中的GetData函数
printf("%d\r\n",*i);
dll:
void GetData(int** i)
{
*i=&exitflag; //将地址指向欲获取的数据的地址
}
------解决方案--------------------
试试这样子定义全局变量。
#pragma data_seg( "MySec" )
extern int exitflag=1;
#pragma data_seg()
------解决方案--------------------
http://topic.****.net/u/20120811/08/398b53ac-69d6-4a7a-91d3-29aa2b0a51a5.html
看看这个。