Solved

Run a command via cmd

Posted on 2010-11-29
1
1,222 Views
Last Modified: 2016-09-29
I'm trying to run cmd.exe with admin privilege and use flushdns on it, how can i do it though ? and catch the output to a TMemo, the attached code is what i'm using but it doesn't seem to flush the DNS cache, where do i put "/flushdhsn" in ?


procedure RunDosInMemo( DosApp: String; AMemo: TMemo ) ;
const
  ReadBuffer = 2400;
var
  Security : TSecurityAttributes;
  ReadPipe, WritePipe : THandle;
  si : TStartUpInfo;
  pi : TProcessInformation;
  Buffer : PAnsiChar;
  BytesRead : DWord;
  Apprunning : DWord;
begin
  With Security do
   begin
    nlength := SizeOf(TSecurityAttributes) ;
    binherithandle := true;
    lpsecuritydescriptor := nil;
   end;
  if Createpipe(ReadPipe, WritePipe, @Security, 0) then
   begin
    Buffer := AllocMem(ReadBuffer + 1);
    FillChar( si, Sizeof(si), #0 );
    si.cb := SizeOf( si );
    si.hStdOutput := WritePipe;
    si.hStdInput := ReadPipe;
    si.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
    si.wShowWindow := SW_HIDE;

    if CreateProcess( PChar(DosApp), '-flushdns', @Security, @Security,
                            TRUE, NORMAL_PRIORITY_CLASS, nil, nil, si, pi)
    then
    begin
     repeat
      Apprunning := WaitForSingleObject( pi.hProcess, 100 );
      Application.ProcessMessages;
     until (Apprunning <> WAIT_TIMEOUT);
      Repeat
        BytesRead := 0;
        ReadFile(ReadPipe, Buffer[0], ReadBuffer, BytesRead, nil);
        Buffer[BytesRead] := #0;
        OemToAnsi( Buffer, Buffer );
        AMemo.Text := AMemo.Text + String(Buffer) ;
         Application.ProcessMessages;
      until (BytesRead < ReadBuffer);
   end;
   FreeMem( Buffer ) ;
   CloseHandle( pi.hProcess ) ;
   CloseHandle( pi.hThread ) ;
   CloseHandle( ReadPipe ) ;
   CloseHandle( WritePipe ) ;
   end;
end;

Open in new window

0
Comment
Question by:rotem156
1 Comment
 
LVL 32

Accepted Solution

by:
ewangoya earned 500 total points
ID: 34232195
if you are flushing the dns then should be

RunDosInMemo( 'cmd.exe /c ipconfig /flushdns', Memo1 );
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
oracle global variables 4 76
Where did System.Data.Objects go? 2 40
can i put an image from resource into image tag ? 6 27
Browsing a TTreeView in Delphi 5 7
This article surveys and compares options for encoding and decoding base64 data.  It includes source code in C++ as well as examples of how to use standard Windows API functions for these tasks. We'll look at the algorithms — how encoding and decodi…
As more and more people are shifting to the latest .Net frameworks, the windows presentation framework is gaining importance by the day. Many people are now turning to WPF controls to provide a rich user experience. I have been using WPF controls fo…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question