IP Config собственными руками
Xakep, номер #045, стр. 045-060-3 Ты спрашивал <???> Как запустить другую программу из Delphi? Н: Для начала в раздел uses нужно ручками прописать имя модуля shellapi. После этого по событию кнопки (или другому событию, которым ты хочешь запустить стороннюю программу) нужно написать код: ShellExecute(Handle, nil, 'c:\program_name.exe', '','c:\', SW_SHOW); Как видишь, у этой функции есть аж 6 параметров: 1. Главное окно. Здесь мы указываем Handle - окно своей программы, но можно и nil. 2. Указатель на строку, которая говорит, что надо делать. Если ты хочешь запустить программу, то рекомендую устанавливать nil. Возможны варианты: open (для открытия программы), print (для распечатки документов) или explore (для просмотра директории). 3. Полный путь или просто имя запускаемого файла. Желательно указывать полный путь. 4. Параметры, которые надо передать в программу. 5. Директория по умолчанию, в которой должна работать программа. 6. Команда отображения. Команд очень много, но чаще всего используется SW_SHOW для нормального отображения. Чтобы загрузить страничку в IE можно написать так: ShellExecute(Handle, nil, 'http://www.xakep.ru', '','', SW_SHOW); Чтобы создать письмо кому-нибудь, пишем так: ShellExecute(Handle, nil, 'MailTo:smirnandr@mail.ru', '','', SW_SHOW); Листинг программы procedure TSystemInfoForm.GetIPInfo; var FixedInfoSize, Err:DWORD; pFixedInfo:PFIXED_INFO; pAddrStr:PIP_ADDR_STRING; begin FixedInfoSize:=0; Err:=GetNetworkParams(nil, FixedInfoSize); if (Err<>0) and (Err<>ERROR_BUFFER_OVERFLOW) then begin HostNameLabel.Caption:='Error'; exit; end; pFixedInfo:=PFIXED_INFO(GlobalAlloc(GPTR, FixedInfoSize)); GetNetworkParams(pFixedInfo, FixedInfoSize); HostNameLabel.Caption:=StrPas(pFixedInfo.HostName); DNSListBox.Items.Clear; DNSListBox.Items.Add(StrPas(pFixedInfo.DnsServerList.IpAddress.S)); pAddrStr:=pFixedInfo.DnsServerList.Next; while (pAddrStr<>nil) do begin DNSListBox.Items.Add(StrPas(pAddrStr.IpAddress.S)); pAddrStr:=pAddrStr.Next; end; case pFixedInfo.NodeType of 1: NodeTypeLabel.Caption:='Broadcast'; 2: NodeTypeLabel.Caption:='Peer to peer'; 4: NodeTypeLabel.Caption:='Mixed'; 8: NodeTypeLabel.Caption:='Hybrid'; end; NetBIOSScopeLabel.Caption:=pFixedInfo.ScopeId; if pFixedInfo.EnableRouting>0 then IPRoutingLabel.Caption:='Yes' else IPRoutingLabel.Caption:='No'; if pFixedInfo.EnableProxy>0 then WINSProxyLabel.Caption:='Yes' else WINSProxyLabel.Caption:='No'; if pFixedInfo.EnableDns>0 then NetBIOSResolutionLabel.Caption:='Yes' else NetBIOSResolutionLabel.Caption:='No'; end; |