我该如何让我的C#程序从其他应用程序中获取数据?
假设这个应用程序是"Yahoo Messenger",有人在聊天框里跟你打招呼说"嗨!"...
现在,我想让我的C#程序读取/获取"Yahoo Messenger聊天框"中的数据或信息,并将其打印在我的应用程序上,这样是否可行?
LPSECURITY_ATTRIBUTES lpAtt=NULL;
HANDLE INVALID_FILE_HANDLE=(HANDLE)0xFFFFFFFF; //Memory handle
hMapFile=::CreateFileMapping(INVALID_FILE_HANDLE,
lpAtt,PAGE_READWRITE, 0,nSize, SharedMemName);
if (hMapFile == NULL)
{
ShowSomeMessageBox("Could not create shared memory");
return NULL;
}
LPTSTR pBuf = (LPTSTR) MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS,0,0,nSize);
if(NULL==pBuf)
{
ShowSomeMessageBox("Could not create mapped view of theshared memory");
return NULL;
}
一旦您拥有了该缓冲区,您可以使用CopyMemory或任何api向其写入数据。
在您的C#应用程序中,您可以使用Interop(P-invoke)调用WinAPI:
使用: OpenFileMapping(),MapViewOfFile() 等打开共享内存
使用: Marshal.ReadInt32(),Marshal.StructureToPtr() 等将数据读取到您的C#数据结构中。