共享软件日期限制问题

symansoft 2000-06-11 06:11:00

我有一个有时间限制的共享软件,我想通过下列办法使用它:
编一外壳程序,记录下当前日期,用Win32 API 函数ShellExecute()调用该软件,再恢复当前日期。程序段如下:

SYSTEMTIME OldDateTime,NewDateTime;
GetSystemTime(&NewDateTime); //取当前日期和时间
GetSystemTime(&NewDateTime);

OldDateTime.wYear= 329679;
OldDateTime.wMonth=393221;
OldDateTime.wDay= 1441807; //将日期改为1999.5.1日

SetSystemTime(&OldDateTime);
ShellExecute(Handle,NULL,"TONG.EXE",NULL,NULL,SW_SHOWNORMAL);
SetSystemTime(&NewDateTime);
其中Tong.exe的功能是取系统当前日期并显示出来。
跟踪调试时Tong.exe显示1999.5.1,一切正常,奇怪的是真正运行时Tong.exe却显示今天的日期,好象Tong.exe还没有完全调入内存(启动),日期便恢复到当前日期了,似乎SetSystemTime(&OldDateTime)并没有执行一样。

个中原委,烦各路神仙指教,谢谢。
...全文
156 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexela 2000-06-13
  • 打赏
  • 举报
回复
你是用的C++BUILDER吗?用APPLICATION下的PROCESSMESSAGE()或HANDLEMESSAGE()函数调用,等待程序执行处理,可解决KXY提出的问题。
symansoft 2000-06-12
  • 打赏
  • 举报
回复

Kxy:
能更详细点吗?最好写一小段程序,把你所说的CreateProcess和waitforSingleEvent包含进去?
nationphone 2000-06-12
  • 打赏
  • 举报
回复
To Kxy:waitforSingleEvent 还是waitforSingleObject,我怎么找不到waitforSingleEvent的原型.
kxy 2000-06-11
  • 打赏
  • 举报
回复
ShellExecute(Handle,NULL,"TONG.EXE",NULL,NULL,SW_SHOWNORMAL);
执行完,就马上执行SetSystemTime(&NewDateTime);当然恢复了.(你的执行比Tong.exe快)
还有
OldDateTime.wYear= 329679;
OldDateTime.wMonth=393221;
OldDateTime.wDay= 1441807; //将日期改为1999.5.1日
你真行, 我靠, I 服了 You, 数字你是怎么弄出来的:)
为何不用 DateTimeToSystemTime(EncodeData(1999,5,1),&OldDateTime);
你可以改用CreateProcess,然后waitforSingleEvent.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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