vc++请教.

来源:百度知道 编辑:UC知道 时间:2024/06/08 20:10:25
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
WPARAM j;
FILE *fp;
if(lParam&0x80000000)
{
char b;
j=wParam;
b=(char)j;
fp=fopen("d:\\hook\\key.txt","a");
fprintf(fp,"%4d",b);
fclose(fp);
}
return 0;
得到写入文件的是ascll码..却不是相对应的字符...如何才能得到ascll码相对应的字符呢??

fprintf(fp,"%c",b); 把那个%d改成 %c . %d 是输出整数的。 %c才打印字符。如果要新建文件的话 直接用“w”就可以了。“a”是附加东西。 你的变量名字 起得很不直观,建议学学匈牙利命名法。

另外 楼上怎么能说是一回事,非也。各个类型的字节数都不一样,怎么可能一回事。存储本质都是二进制,但解释不同,效果就不一样。windows是小端法存储的。以二进制查看文件 你就明白了

b=(char)j;

字符就是按ascii存储的 是一回事 直接写入就可以了

如果有ascii码,char(ascii码)就输出了