我弄了一个键盘钩子,想定义一个全局变量char g_szKey[1000]来存储侦听到的所有应用程序的敲键内容。但调试发现,在不同的应用程序上进入的钩子函数里面的全局变量的地址是不一样的,导致该全局变量无法存储侦听所有应用程序的敲键内容。怎么办呢?有哪位高手能告诉我一下?我不想把侦听的内容存在某个文件里面。
我的全局变量是这样声明的:
#pragma data_seg("shared")
static char g_szKey[1000] = {0};
#pragma data_seg()

解决方案 »

  1.   

    比如在Notepad里面敲入"abcd",该全局变量g_szKey就保存abcd;这时候在IE里面又敲入efg,本来应该得到“abcdefg”的,但结果只得到efg,就是说在IE里面的钩子函数无法使用在Notepad里面触发的钩子函数保存下来的内容。
      

  2.   

    再*.def中加入:
    SECTIONS 
        sharedREAD WRITE SHARED
      

  3.   

    应该这样
    SECTIONS 
        shared READ WRITE SHARED
      

  4.   

    你的链接器指令没有写完全:
    #pragma data_seg("shared")
    static char g_szKey[1000] = {0};
    #pragma data_seg()
    #pragma comment(linker, "/section:shared,rws")
      

  5.   

    To titilima(李马) :
    kmlin(大象头上一颗葱)的方法我试了可以,但在不同的应用程序里面的全局变量的地址还是不一样。我去试试你说的方法,看起来应该跟kmlin的效果一样