简体   繁体   中英

c# add or read from an c# exe file

Is it possible to open ac# 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.

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM