dina
dina

Reputation: 1

c# add or read from an c# exe file

Is it possible to open a c# exe file (console app) from another c # project (windows form) and to write or read different text values from the exe file? i'm using user32dll to handle the exe file.

Thx I did use this method to add a text in an exe file:

        Clipboard.SetText("Message!");
        foreach (IntPtr pPost in pControls)
        {
            PostMessage(pPost, (uint)WindowMessage.WM_PASTE, 0, 0);
        }

but is not working. I don't see the "Message" post added in c# exe (which is a console app) . Thoug using the notepad.exe everyting is working ok.

Upvotes: 0

Views: 1980

Answers (2)

Hans Passant
Hans Passant

Reputation: 941218

There are a large number of possible failure modes here.

  • First off, WM_PASTE is sent, not posted, you should use SendMessage().
  • Only a limited number of Windows controls actually implement behavior for this message, it has to be a edit control, rich edit control or combo box.
  • There's UIPI, the user interface part of UAC, it stops an unelevated process from hijacking the privileges of an elevated one.
  • There's the usefulness of doing something like this, pasting text in every child window doesn't make much sense.
  • The pinvoke declaration you used for PostMessage() isn't correct, the wparam and lparam arguments are IntPtr, not int.

Visit pinvoke.net for (usually) correct pinvoke declarations.

Upvotes: 2

Oded
Oded

Reputation: 498904

You can use the Process class to execute the command line app and redirect the input/output using the StandardInput and StandardOutput properties.

From MSDN:

 Process p = new Process();
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.FileName = "Write500Lines.exe";
 p.Start();
 string output = p.StandardOutput.ReadToEnd();
 p.WaitForExit();

There are more examples on the StandardOutput page linked above.

Upvotes: 6

Related Questions