delphi用winexec这个去修改dns怎么修改不成功呢? 如题,他返回给我的值是33,说明成功了嘛,为什么dns里面的东西没被改了呢。我有获取到数据,可是就是没有修改成功,上面的ip地址成功了,网络上有重名会影响吗??好神奇啊!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //------------自定义函数等待执行并返回--------------------------function WinExecAndWait(strFileName: string; uCmdShow: UINT):DWORD;var cAppName: array [0..512] of char; cCurDir: array [0..255] of char; strWorkDir: string; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation;begin StrPCopy(cAppName, strFileName); GetDir(0, strWorkDir); StrPCopy(cCurDir, strWorkDir); FillChar(StartupInfo, Sizeof(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := uCmdShow; if not CreateProcess(nil, cAppName, nil, nil, true, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then Result := INFINITE else begin WaitforSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, Result); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end;end;procedure TForm1.btnModifyClick(Sender: TObject);beginWinExecAndWait('netsh interface ip set address name= "'+edtName.Text+'" source=static addr='+edtIP.Text+' mask='+edtMask.Text,SW_HIDE);WinExecAndWait('netsh interface ip set address name= "'+edtName.Text+'" gateway='+edtGateway.Text+' gwmetric=0',SW_HIDE);WinExecAndWait('netsh interface ip set dns name= "'+edtName.Text+'" source=static addr='+edtDNS1.Text+' register=PRIMARY',SW_HIDE);WinExecAndWait('netsh interface ip add dns name= "'+edtName.Text+'" addr='+edtDNS2.Text+' index=2',SW_HIDE);WinExecAndWait('netsh interface ip set wins name= "'+edtName.Text+'" source=static addr=none',SW_HIDE); 一个功能的思路望高人指点 问个高难度问题,关于运行列表 向深圳的朋友问个技术无关的问题, 关于java与dotnet工资方面的! 小问题 ¥¥¥¥一系列的问题??这是我最后的分数了¥¥¥¥ 如何把delphi6中的报表预览窗口 提示变为中文?? 小问题,今日必结贴:如何在局域网内共享MODEM上网? 从现CSDN,请多多关照,版主请不要删! 我有困难!有人懂floating数值类型不匹配问题吗? 有谁知道如何在window2000下创建象flashget那个小盒那样的透明窗口?急用! delphi中多个文件压缩问题 我想改写TEDIT组件,请高手帮忙!
function WinExecAndWait(strFileName: string; uCmdShow: UINT):DWORD;
var
cAppName: array [0..512] of char;
cCurDir: array [0..255] of char;
strWorkDir: string;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
StrPCopy(cAppName, strFileName);
GetDir(0, strWorkDir);
StrPCopy(cCurDir, strWorkDir);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := uCmdShow;
if not CreateProcess(nil, cAppName, nil, nil, true, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil, nil, StartupInfo, ProcessInfo) then
Result := INFINITE
else
begin
WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, Result);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end;
end;
procedure TForm1.btnModifyClick(Sender: TObject);
begin
WinExecAndWait('netsh interface ip set address name= "'+edtName.Text+'" source=static addr='+edtIP.Text+' mask='+edtMask.Text,SW_HIDE);
WinExecAndWait('netsh interface ip set address name= "'+edtName.Text+'" gateway='+edtGateway.Text+' gwmetric=0',SW_HIDE);
WinExecAndWait('netsh interface ip set dns name= "'+edtName.Text+'" source=static addr='+edtDNS1.Text+' register=PRIMARY',SW_HIDE);
WinExecAndWait('netsh interface ip add dns name= "'+edtName.Text+'" addr='+edtDNS2.Text+' index=2',SW_HIDE);
WinExecAndWait('netsh interface ip set wins name= "'+edtName.Text+'" source=static addr=none',SW_HIDE);