c# add or read from an c# exe file
Is it possible to open a c# exe file (cons开发者_开发百科ole 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.
精彩评论