SetTimer函数问题

Tody Guo 2010-10-29 04:19:56
请问下面代码中的回调函数(TimeProc)怎么没有执行啊。帮帮忙啊。。。还是它就不能在控制台下运行啊。。。。

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

const int IDT_TIMER1 = 0;

void CALLBACK TimeProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
MessageBox (0, "Test Message from DLL!\n", "DLL Message", MB_ICONINFORMATION);
}

int main(int argc, char *argv[])
{
HANDLE hwnd;
HANDLE hDev;
char buf[512] = {'\0'};
DWORD num;
int i = 0;

system("title Test");

hwnd = FindWindowA(NULL,"Test");
if (hwnd == INVALID_HANDLE_VALUE)
{
fprintf(stderr, "Not found\n");
exit(1);
}

num = SetTimer(NULL, IDT_TIMER1, 1000, TimeProc);
printf("handle=%#x --------------->>>> Timer ok? %#x Err:%d\n", hwnd, num, GetLastError());
printf("--------------------------------------------------------------------"
"-----------\n", hwnd, num, GetLastError());


hDev = CreateFileA("\\\\.\\PHYSICALDRIVE0", GENERIC_READ, FILE_SHARE_READ,
0,
OPEN_EXISTING,
0,
0);
if (hDev == INVALID_HANDLE_VALUE)
{
fprintf(stderr, "\\\\.\\PHYSICALDRIVE0 Open Error\n");
exit(1);
}

ReadFile(hDev, buf, 512, &num, NULL);

CloseHandle(hDev);

for (i=0; i<512; i++)
{
printf("%02X%c", buf[i]&0xFF, (i+1)%26?' ':'\n');
}
printf("\nNum: %d bytes", num);

_getch();
return 0;
}

...全文
199 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tody Guo 2010-10-29
  • 打赏
  • 举报
回复
#6楼正解,,,,加上后,函数开始执行。。。谢谢哈。。。给分。。。
Tody Guo 2010-10-29
  • 打赏
  • 举报
回复
_getch()换成while (1);还是不会执行回调函数。。。
rendao0563 2010-10-29
  • 打赏
  • 举报
回复
在_getch(); 前面加上这段代码

MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, NULL, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
ShineSpark 2010-10-29
  • 打赏
  • 举报
回复
我估计是不能用的 至少需要消息传递 可能函数或者函数的参数传递不过去
skuall2005 2010-10-29
  • 打赏
  • 举报
回复
你回调函数还没收到 你程序就结束了.....你把后面的getch换换试下
Tody Guo 2010-10-29
  • 打赏
  • 举报
回复
返回值不为0.是有值的。。。


如下。:
handle=0x100584 --------------->>>> Timer ok? 0x63e5 Err:0
-------------------------------------------------------------------------------
33 C0 8E D0 BC 00 7C 8E C0 8E D8 BE 00 7C BF 00 06 B9 00 02 FC F3 A4 50 68 1C
06 CB FB B9 04 00 BD BE 07 80 7E 00 00 7C 0B 0F 85 10 01 83 C5 10 E2 F1 CD 18
88 56 00 55 C6 46 11 05 C6 46 10 00 B4 41 BB AA 55 CD 13 5D 72 0F 81 FB 55 AA
75 09 F7 C1 01 00 74 03 FE 46 10 66 60 80 7E 10 00 74 26 66 68 00 00 00 00 66
FF 76 08 68 00 00 68 00 7C 68 01 00 68 10 00 B4 42 8A 56 00 8B F4 CD 13 9F 83
C4 10 9E EB 14 B8 01 02 BB 00 7C 8A 56 00 8A 76 01 8A 4E 02 8A 6E 03 CD 13 66
61 73 1E FE 4E 11 0F 85 0C 00 80 7E 00 80 0F 84 8A 00 B2 80 EB 82 55 32 E4 8A
56 00 CD 13 5D EB 9C 81 3E FE 7D 55 AA 75 6E FF 76 00 E8 8A 00 0F 85 15 00 B0
D1 E6 64 E8 7F 00 B0 DF E6 60 E8 78 00 B0 FF E6 64 E8 71 00 B8 00 BB CD 1A 66
23 C0 75 3B 66 81 FB 54 43 50 41 75 32 81 F9 02 01 72 2C 66 68 07 BB 00 00 66
68 00 02 00 00 66 68 08 00 00 00 66 53 66 53 66 55 66 68 00 00 00 00 66 68 00
7C 00 00 66 61 68 00 00 07 CD 1A 5A 32 F6 EA 00 7C 00 00 CD 18 A0 B7 07 EB 08
A0 B6 07 EB 03 A0 B5 07 32 E4 05 00 07 8B F0 AC 3C 00 74 FC BB 07 00 B4 0E CD
10 EB F2 2B C9 E4 64 EB 00 24 02 E0 F8 24 02 C3 49 6E 76 61 6C 69 64 20 70 61
72 74 69 74 69 6F 6E 20 74 61 62 6C 65 00 45 72 72 6F 72 20 6C 6F 61 64 69 6E
67 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 00 4D 69 73 73 69 6E 67
20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 00 00 00 00 62 7A 99 84 1E
85 1E 00 00 80 01 01 00 07 FE FF FF 3F 00 00 00 34 0A 80 02 00 00 C1 FF 07 FE
FF FF 73 0A 80 02 4E DA D0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
Num: 512 bytes
Jim_King_2000 2010-10-29
  • 打赏
  • 举报
回复
如果SetTimer函数失败,则返回0。检查一下SetTimer的返回值是否为0。
ouyh12345 2010-10-29
  • 打赏
  • 举报
回复
需要消息机制的支持

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧