将文本从NotePad发送到未聚焦的Form1

时间:2016-03-28 02:31:46

标签: c# winforms backgroundworker background-process setfocus

这次我打开reciveText.txt并在此txt文件中找到焦点,我想在其上写一些文字;并且同时在textBox的{​​{1}} Form中写下相同的文本,这将是secon平面,我的意思是,没有焦点。如何在第二架飞机上将文字从notepad发送到textBox

有可能吗?

PS:在实际情况下,BarCode Reader会在特定的strings NotePad中编写File,而另一个将在第二个平面上运行的应用程序(如backgroundprocess或者没有焦点)将阅读那些strings并且当检测到某种问题时,应用程序将通过视觉警报通知我们...我只需要知道如何发送条形码阅读器刚读到的内容没有焦点的Form ......

请帮助!

1 个答案:

答案 0 :(得分:-2)

我会评论,但我不能。

无论如何,我会做一些记忆黑客攻击: http://www.codeproject.com/Articles/670373/Csharp-Read-Write-another-Process-Memory

使用它访问记事本的内存(RAM)。你可以看到明文。

记忆黑客通常被忽视,并没有得到很多信任。每个人都有键盘或东西,但这是不必要的。就这样做:

这是来自codeplex:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;

public class MemoryRead
{
const int PROCESS_WM_READ = 0x0010;

[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);

[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(int hProcess, 
  int lpBaseAddress, byte[] lpBuffer, int dwSize, ref int lpNumberOfBytesRead);

public static void Main()
{
    Process process = Process.GetProcessesByName("notepad")[0]; 
    IntPtr processHandle = OpenProcess(PROCESS_WM_READ, false, process.Id); 

    int bytesRead = 0;
    byte[] buffer = new byte[24]; //'Hello World!' takes 12*2 bytes because of Unicode 


    // 0x0046A3B8 is the address where I found the string, replace it with what you found
    ReadProcessMemory((int)processHandle, 0x0046A3B8, buffer, buffer.Length, ref bytesRead);

    Console.WriteLine(Encoding.Unicode.GetString(buffer) + 
       " (" + bytesRead.ToString() + "bytes)");
    Console.ReadLine();
}
}

更新 复制并粘贴错误的代码。以上是新的