初学者请教!(70分)

  • 主题发起人 主题发起人 nicefeel
  • 开始时间 开始时间
N

nicefeel

Unregistered / Unconfirmed
GUEST, unregistred user!
1,如何让程序自动判断是在什么操作系统运行的?比如我的程序只能用在win2000,当它用在
win98时,让程序弹个框出来然后自动退出?而在win2000下就可以正常运行!
2,点完一个按钮之后,弹出一个框,确认是否立即重启计算机!选yes,重启计算机,选No,不重启
退出程序!
 
1: GetSystemInfo ;---具体你查阅MSDN
2:
ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数
首先定义常数
const
EWX_FORCE=4; //关闭所有程序并以其他用户身份登录
EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式
EWX_REBOOT=2; //重新启动计算机
EWX_SHUTDOWN=1;//关闭计算机
运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句
ExitWindowsEx(How,0);
;
 
通过程序读取注册表
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion
下的version键值即可,你可以先进去看看就知道了.
4然后根据这个键值在执行程序。
 
谢谢两位,我的操作是在win2000下进行的,我使用的ExitWindowsEx(EWX_REBOOT,0);这个
api函数,但在2000下好象没什么反应?请问这是怎么回事?
;
 
需要取得权限才能关机,论坛里面有不少这方面的帖子。
 
同意yzhshi!
 
感谢!经过搜索,第两个问题已经解决!
但第一个又出了点问题,我想让程序在98里运行时只弹出个框,然后退出!我的代码如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
judge:=tregistry.Create;
judge.rootkey:=HKEY_LOCAL_MACHINE;
judge.OpenKeyReadOnly('Software/Microsoft/Windows/CurrentVersion');
if ('Windows 98'=judge.ReadString('version'))
then
MessageDlg('本程序不适用于win98!请退出!', mtInformation,
; ; ; [mbOk], 0);
; ; form1.Close;

end;
是通过看注册表中的信息来判断,
运行后提示框可以正常弹出,但程序还是执行了,我想让程序在98里根本不运行应该如何做?
请教!!!
另:GetSystemInfo这是个api吗?能否讲的再清楚一些,或者有这个参数的资料告之,非常感谢!!
 
第一个问题用不着那么麻烦:
直接访问Win32Platform变量就可得到当前系统类型,定义如下:
VER_PLATFORM_WIN32s ; ; ; ;System is Win32s.
VER_PLATFORM_WIN32_WINDOWS ; System is Windows 95(Win98).
VER_PLATFORM_WIN32_NT ; ; ; ;System is Windows NT(Win2000).

要让程序在98里根本不运行应该把代码写在dpr中,如下:
begin
; Application.Initialize;
; if Win32Platform <> VER_PLATFORM_WIN32_WINDOWS then
; begin
; ; Application.CreateForm(TForm1, Form1);
; ; Application.Run;
; end
; else
; ; Application.MessageBox('本程序不适用于win98!请退出!', '提示',
; ; ; MB_OK or MB_DEFBUTTON1);
end.
;
 
非常感谢!!
 
后退
顶部