Windows进程间通信(中)
二、文件映射
文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。
Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。
应用程序有三种方法来使多个进程共享一个文件映射对象。
(1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄。
(2)命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。第二个进程可通过这个名字打开此文件映射对象。另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。
(3)句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。第二个进程复制该句柄就取得对该文件映射对象的访问权限。
文件映射是在多个进程间共享数据的非常有效方法,有较好的安全性。但文件映射只能用于本地机器的进程之间,不能用于网络中,而开发者还必须控制进程间的同步。
三、共享内存:
Win32 API中共享内存(Shared Memory)实际就是文件映射的一种特殊情况。进程在创建文件映射对象时用0xFFFFFFFF来代 替文件句柄(HANDLE),就表示了对应的文件映射对象是从操作系统页面文件访问内存,其它进程打开该文件映射对象就可以访问该内存块。由于共享内存是 用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。
CreateFileMapping:Creates or opens a named or unnamed file mapping object for a specified file.
HANDLE WINAPI CreateFileMapping(
_In_ HANDLE hFile,//指定欲在其中创建映射的一个文件句柄。通常取值:(HANDLE)0xFFFFFFFF(-1,即INVALID_HANDLE_VALUE)表示在页面文件中创建一个可共享的文件映射。
_In_opt_ LPSECURITY_ATTRIBUTES lpAttributes,
_In_ DWORD flProtect,//文件映射所需的访问权限
_In_ DWORD dwMaximumSizeHigh,
_In_ DWORD dwMaximumSizeLow,
_In_opt_ LPCTSTR lpName
);
MapViewOfFile:Maps a view of a file mapping into the address space of a calling process.
LPVOID WINAPI MapViewOfFile(
_In_ HANDLE hFileMappingObject,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwFileOffsetHigh,
_In_ DWORD dwFileOffsetLow,
_In_ SIZE_T dwNumberOfBytesToMap//指定将文件映射内核对象的多少字节映射到进程地址中;如果取值为0,则整个文件映射对象被映射进来
);
OpenFileMapping:Opens a named file mapping object.
HANDLE WINAPI OpenFileMapping(
_In_ DWORD dwDesiredAccess,//指明打开文件映射内核对象的访问权限,与CreateFileMapping()中的参数取值相同
_In_ BOOL bInheritHandle,
_In_ LPCTSTR lpName
);
The first process creates the file mapping object by calling the CreateFileMapping function with INVALID_HANDLE_VALUE and a name for the object. By using the PAGE_READWRITE flag, the process has read/write permission to the memory through any file views that are created.
Then the process uses the file mapping object handle that CreateFileMapping returns in a call to MapViewOfFile to create a view of the file in the process address space. The MapViewOfFile function returns a pointer to the file view, pBuf
. The process then uses the CopyMemory function to write a string to the view that can be accessed by other processes.
Prefixing the file mapping object names with "Global\" allows processes to communicate with each other even if they are in different terminal server sessions. This requires that the first process must have the SeCreateGlobalPrivilege privilege.
When the process no longer needs access to the file mapping object, it should call the CloseHandle function. When all handles are closed, the system can free the section of the paging file that the object uses.
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h> #define BUF_SIZE 256
TCHAR szName[] = TEXT("Global\\MyFileMappingObject");
TCHAR szMsg[] = TEXT("Message from first process."); int _tmain()
{
HANDLE hMapFile;
LPCTSTR pBuf; hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
, // maximum object size (high-order DWORD)
BUF_SIZE, // maximum object size (low-order DWORD)
szName); // name of mapping object if (hMapFile == NULL)
{
_tprintf(TEXT("Could not create file mapping object (%d).\n"),
GetLastError());
return ;
}
pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
,
,
BUF_SIZE); if (pBuf == NULL)
{
_tprintf(TEXT("Could not map view of file (%d).\n"),
GetLastError()); CloseHandle(hMapFile); return ;
} CopyMemory((PVOID)pBuf, szMsg, (_tcslen(szMsg) * sizeof(TCHAR)));
_getch(); UnmapViewOfFile(pBuf); CloseHandle(hMapFile);
system("pause");
return ;
}
A second process can access the string written to the shared memory by the first process by calling the OpenFileMapping function specifying the same name for the mapping object as the first process. Then it can use the MapViewOfFile function to obtain a pointer to the file view, pBuf
. The process can display this string as it would any other string. In this example, the message box displayed contains the message "Message from first process" that was written by the first process.
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#pragma comment(lib, "user32.lib") #define BUF_SIZE 256
TCHAR szName[] = TEXT("Global\\MyFileMappingObject"); int _tmain()
{
HANDLE hMapFile;
LPCTSTR pBuf; hMapFile = OpenFileMapping(
FILE_MAP_ALL_ACCESS, // read/write access
FALSE, // do not inherit the name
szName); // name of mapping object if (hMapFile == NULL)
{
_tprintf(TEXT("Could not open file mapping object (%d).\n"),
GetLastError());
return ;
} pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
,
,
BUF_SIZE); if (pBuf == NULL)
{
_tprintf(TEXT("Could not map view of file (%d).\n"),
GetLastError()); CloseHandle(hMapFile); return ;
} MessageBox(NULL, pBuf, TEXT("Process2"), MB_OK); UnmapViewOfFile(pBuf); CloseHandle(hMapFile);
system("pause");
return ;
}
先运行程序一,创建一个内核映射对象并映射到内存:
aaarticlea/png;base64,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" alt="" />
再运行程序二,打开内核映射对象并映射到内存,读取数据:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhoAAAEvCAIAAACMhP/yAAAgAElEQVR4nOy9d3Ak153n+fb/uRmyG0CjLZtsD+8L5b333nvvvfdVKFQVCh5t2N2kKFHSUCLbo32TTVGz88ft7Eas9lZ7t6e4i9VexG7EjcxIM7cj3f5zf2RmGQDtKWluh4hPVGRmZf7e7/3eQ37rmXwJjh49euTIkcOHDx8+fHhwcHBgYOB/emvfn4o/77D/z9/a/xdv9b31dv9bb/e/vW/g7X0H9u0b3Ld/cP/+g319h/v7jgz0Hz3Qf2xw4J2DA8cPHXj38IH3Dh947/Dge0cGTxwZfO/wgXcPDRw/OHBssP/ogf4jA32H+/oO9e0/1N93qL/v8EDn8mODA+8gHBscODbYvzcH+o8e6D860H9koO/IQN/hgb7D/RD9h/sHDvcfONI/CHG4/8Dh/gOH+gcO9Q0c6us/1Nd3sK/vUF/fIeh8JOmjcHKd1GEOQp70HxvoP4Kkcqiv71Bf/6G+/kP9A4f7DxweGDzSP3i478ChvoGD+/sH9/Ud2Nc38Pb+/rf29b21r39f38D+/gP9A4MDBw4eOHBocPDQ4MHDBw8ePnToSJvDh48ePnz0yOGjR470chjmMEL7yJEjR48cOdZ1zpFDh44MDh4aGBjs6z+wv29gf9/Avr6Bffv79/UN9PUf6B8YPDB4aHAQTrrHFJzEkcOIPwcPHj548NDg4KEDBw4ODAz29Q3s29//9r6+t/f379vfv2//wP4+2CBk7ciRY0ePHDt27Pg7x44f7+KdY8ffOfbOsaPvHDv6zrEjx44eOXYU8RlJC05oEEqo/8D+voG39/W9ta/vbZj+ffv79yNZGBgYHDhwEOLA4N7BRELalccjR48cOXr48JFDhw4PDh46cGCwnRacnXZ8kOwcO/rOMdj/48ePHT/+zvHj77z77jvvvnv83XePvwfx3vH33j3+7rvH3333nXfffefd4++8e/yddsbfOXb0naNHjvVG+Ojhw0cPH4LjfPjQEagQjx19551jx48ff/e9d987+d7Jk++deO/4e8ePHT925NiRQ0cODh4aGBiESnN/30Bf/2D/wODAgUODg4cOQuV45OgRJLbdEe5O9MjhzjnHju5xcm/RHx6EYotwAKkJ/UhleGtf31twMfW/jdSxAbiO9RTKkcNHj/bGE6JdJbrqXifpTnJIZYbrc99Auz53/qEGD0FuH4QdPjgwMNiPlC9Ub9/eP/D2/oG3+w7sGzjYd+BQ/+CRgYNHBw4eadM/eLh/8BD0X7yv/8DbfQNv7ev7i7f3//nb+6Hb4J/wVvx6AEhLDh061NfX9xdv7z95+kyztbx978H2vQf3Hz7+Onj04FGbx88COvnBw8cPHj2BePjo84ePvnj0+ItHj58+fvzl48dfPn7y5ZMnP3ry5EefP/nq8ydfffH5j7/4/K+efv5XT7/4l19+8ddffvHXP+riyy/+5Zdf/NUXT378xZOvPn/yoyeQBcTUk8c/evLkq46dJz/+HNmFgBLq8Bjiy8ePv3z86MvHj54+fvT00aOnjx598ejRF48eP3305OmjJ18++vzLR0+eInzx8PEXDx99/uDh5w8ewDx88AXEo4dPHz38EuHpo4dPHz2Aefjg6cMHXzy4//mD+0/u33ty795jiLv3Ht299+je/cf3Hjy+9+DJvYdP7j54tH3/4fa9B3fuPri9fe/WnXs3b2/fvL19687d29v37mzf2757f/vug7v3Hty79+Defejz4b37D+7df3h/bx7cu/d87kPcvXvv7va97e27t29v37x158aNW9ev37x2/ea16zc/u37z2vWb12/cvnHz9s1bd27d3r59e/v2nbt3ILbvbm/f3d5Gdu/cvQ2dcHv71q07N2/dvnnz9vUbt65dv/nZtRuffnb9089ufHrtxqfXbnx2/ea1G7du3Lx989b27dvbd7bvbW/fu3f3/r17D+53ce/e/Xt379/dvrcN88xUbty81U7oh59d/+Gn13742fU2cIrXb16/cev6jVvXb9y+fvP2jZu3b96808nUDu50MtVO9NbtOzdv3m7HB0rr08+ud2Xnzq3b27fv3N3evnd3+97du/fv3r3fna8H9x8+j56M39vevre9w4c7PU7egRK6e//evQcPHjx69PDxk0dPnjx68ujho4f3H96/d//u9t3bt+/cuAlHphOEm7dv3oQzDlne3r7bDnJ3otud4EM5uofUlm73kOKAS+TOzVt3bt683eYGUkDXr9/87PqNT6FyQcro089ufHbt5rXrt65DAbx159bt7Vu9edxGggnF826nViCuPrtKwHm/duMzqO7BcbgF1+p2oojPN5Ai/uzajR9+eu0Hn177wafXf/DZ9R98duOH125+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" alt="" />
参考:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366551
http://blog.csdn.net/xiaobai1593/article/details/7488351
四、邮件槽
使用邮槽通信的进程分为服务端和客户端。邮槽由服务端创建,在创建时需要指定邮槽名,创建后服务端得到邮槽的句柄。在邮槽创建后,客户端可以通过邮槽名打开邮槽,在获得句柄后可以向邮槽写入消息。邮槽通信是单向的,只有服务端才能从邮槽中读取消息,客户端只能写入消息。因此可建立多个 邮件槽实现进程间的双向通信。消息是先入先出的。客户端先写入的消息在服务端先被读取。通过邮槽通信的数据可以是任意格式的,但是一条消息不能大于424字节。邮槽除了在本机内进行进程间通信外,在主机间也可以通信。但是在主机间进行邮槽通信,数据通过网络传播时使用的是数据报协议(UDP),所以是一种不可靠的通信。通过网络进行邮槽通信时,客户端必须知道服务端的主机名或域名。
看一看官方的说法:
A mailslot is a mechanism for one-way interprocess communications (IPC). Applications can store messages in a mailslot. The owner of the mailslot can retrieve messages that are stored there. These messages are typically sent over a network to either a specified computer or to all computers in a specified domain. A domain is a group of workstations and servers that share a group name.
You can choose to use named pipes or Windows Sockets instead of mailslots for interprocess communications. Named pipes are a simple way for two processes to exchange messages. Mailslots, on the other hand, are a simple way for a process to broadcast messages to multiple processes. One important consideration is that mailslots broadcast messages using datagrams. A datagram is a small packet of information that the network sends along the wire. Like a radio or television broadcast, a datagram offers no confirmation of receipt; there is no way to guarantee that a datagram has been received. Just as mountains, large buildings, or interfering signals might cause a radio or television signal to get lost, there are things that can prevent a datagram from reaching a particular destination. Named pipes are like telephone calls: you talk only to one party, but you know that the message is being received.
CreateMailslot:Creates a mailslot with the specified name and returns a handle that a mailslot server can use to perform operations on the mailslot. The mailslot is local to the computer that creates it. An error occurs if a mailslot with the specified name already exists.
HANDLE WINAPI CreateMailslot(
_In_ LPCTSTR lpName,
_In_ DWORD nMaxMessageSize,
_In_ DWORD lReadTimeout,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
- Parameters:
- lpName [in]
-
The name of the mailslot. This name must have the following form:
\\.\mailslot\[path]name
The name field must be unique. The name may include multiple levels of pseudo directories separated by backslashes. For example, both \\.\mailslot\example_mailslot_name and \\.\mailslot\abc\def\ghi are valid names.
- nMaxMessageSize [in]
-
The maximum size of a single message that can be written to the mailslot, in bytes. To specify that the message can be of any size, set this value to zero.
- lReadTimeout [in]
-
The time a read operation can wait for a message to be written to the mailslot before a time-out occurs, in milliseconds. The following values have special meanings.
SetMailslotInfo:Sets the time-out value used by the specified mailslot for a read operation.
BOOL WINAPI SetMailslotInfo(
_In_ HANDLE hMailslot,
_In_ DWORD lReadTimeout
);
GetMailslotInfo:Retrieves information about the specified mailslot.
BOOL WINAPI GetMailslotInfo(
_In_ HANDLE hMailslot,
_Out_opt_ LPDWORD lpMaxMessageSize,
_Out_opt_ LPDWORD lpNextSize,
_Out_opt_ LPDWORD lpMessageCount,
_Out_opt_ LPDWORD lpReadTimeout
);
Parameters:
-
- hMailslot [in]
-
A handle to a mailslot. The CreateMailslot function must create this handle.
- lpMaxMessageSize [out, optional]
-
The maximum message size, in bytes, allowed for this mailslot. This value can be greater than or equal to the value specified in the cbMaxMsg parameter of the CreateMailslot function that created the mailslot. This parameter can be NULL.
- lpNextSize [out, optional]
-
The size of the next message, in bytes. The following value has special meaning.
- lpMessageCount [out, optional]
-
The total number of messages waiting to be read, when the function returns. This parameter can be NULL.
- lpReadTimeout [out, optional]
-
The amount of time, in milliseconds, a read operation can wait for a message to be written to the mailslot before a time-out occurs. This parameter is filled in when the function returns. This parameter can be NULL.
举例:
The process that creates a mailslot can read messages from it by using the mailslot handle in a call to the ReadFile function. The following example calls the GetMailslotInfo function to determine whether there are messages in the mailslot. If messages are waiting, each is displayed along with the number of messages remaining to be read.
A mailslot exists until the CloseHandle function is called for all open server handles or until all server processes that own a mailslot handle exit. In both cases, any unread messages are deleted from the mailslot, all client handles to the mailslot are closed, and the mailslot itself is deleted from memory.
Server(Reader)端:
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h> HANDLE hSlot;
LPTSTR SlotName = TEXT("\\\\.\\mailslot\\sample_mailslot"); BOOL ReadSlot()
{
DWORD cbMessage, cMessage, cbRead;
BOOL fResult;
LPTSTR lpszBuffer;
TCHAR achID[];
DWORD cAllMessages;
HANDLE hEvent;
OVERLAPPED ov; cbMessage = cMessage = cbRead = ; hEvent = CreateEvent(NULL, FALSE, FALSE, TEXT("ExampleSlot"));
if (NULL == hEvent)
return FALSE;
ov.Offset = ;
ov.OffsetHigh = ;
ov.hEvent = hEvent; fResult = GetMailslotInfo(hSlot, // mailslot handle
(LPDWORD)NULL, // no maximum message size
&cbMessage, // size of next message
&cMessage, // number of messages
(LPDWORD)NULL); // no read time-out if (!fResult)
{
printf("GetMailslotInfo failed with %d.\n", GetLastError());
return FALSE;
} if (cbMessage == MAILSLOT_NO_MESSAGE)
{
printf("Waiting for a message...\n");
return TRUE;
} cAllMessages = cMessage; while (cMessage != ) // retrieve all messages
{
// Create a message-number string. StringCchPrintf((LPTSTR)achID,
,
TEXT("\nMessage #%d of %d\n"),
cAllMessages - cMessage + ,
cAllMessages); // Allocate memory for the message. lpszBuffer = (LPTSTR)GlobalAlloc(GPTR,
lstrlen((LPTSTR)achID)*sizeof(TCHAR) + cbMessage);
if (NULL == lpszBuffer)
return FALSE;
lpszBuffer[] = '\0'; fResult = ReadFile(hSlot,
lpszBuffer,
cbMessage,
&cbRead,
&ov); if (!fResult)
{
printf("ReadFile failed with %d.\n", GetLastError());
GlobalFree((HGLOBAL)lpszBuffer);
return FALSE;
} // Concatenate the message and the message-number string. StringCbCat(lpszBuffer,
lstrlen((LPTSTR)achID)*sizeof(TCHAR) + cbMessage,
(LPTSTR)achID); // Display the message. _tprintf(TEXT("Contents of the mailslot: %s\n"), lpszBuffer); GlobalFree((HGLOBAL)lpszBuffer); fResult = GetMailslotInfo(hSlot, // mailslot handle
(LPDWORD)NULL, // no maximum message size
&cbMessage, // size of next message
&cMessage, // number of messages
(LPDWORD)NULL); // no read time-out if (!fResult)
{
printf("GetMailslotInfo failed (%d)\n", GetLastError());
return FALSE;
}
}
CloseHandle(hEvent);
return TRUE;
} BOOL WINAPI MakeSlot(LPTSTR lpszSlotName)
{
hSlot = CreateMailslot(lpszSlotName,
, // no maximum message size
MAILSLOT_WAIT_FOREVER, // no time-out for operations
(LPSECURITY_ATTRIBUTES)NULL); // default security if (hSlot == INVALID_HANDLE_VALUE)
{
printf("CreateMailslot failed with %d\n", GetLastError());
return FALSE;
}
return TRUE;
} void main()
{
MakeSlot(SlotName); while (TRUE)
{
ReadSlot();
Sleep();
}
}
运行Server端后一直处在等待状态:
aaarticlea/png;base64,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s9/+6XsYfh4AACDdXJu9PX3j9vSNuekbyJdv/fG7P+/avTfT7QIAANhhXL919/rNOzM378zM3rk2Ozd9Y+5P3//lZ2DHAAAAaebm7flZpLl7N27dvX7r7vd//ivYMQAAQLq5dff+rTv3b97ZMOXv/wJ2DAAAkHZuzy/evrc4d29x7u4CsuY///VvYMcAAADp5t7Cyt2F5bv3l+7cX7ozv3R7fukvf/07PMoDAABIN/OLD+YXV+4trIR9efmvf/sB7BgAACDdLK6sLSyvLiw/XFh+eH/p4f2lh3/74R/w3jEAAEC6WXqwtvRgbXFlFWlhefXvP/wDPpIGAABINyur68sPHy0/fIR8eenB2g//+OfP97yX6XYBAADsMB6sPV5Zfbyyuv5g9fHK6vrK6voP//zxFzCiGwAAQJpZXX/68NETXA8ePf7Hj//65a9gvGMAAID08ujJ87XHzyL1zx//vXvv+5luFwAAwA5j/emLR0+eR+rHf/3nnf0fZLpdAAAAO4wnz14+fvoirJePn7388d//2QN2DAAAkGaePP/68bOXyIifPHv55PnX//r3/+15D5KkAQAA0svTF18/ff71k7CevvjmX//5v3cPZGW6XQAAADuL/wf4u1CuAYlsbwAAAABJRU5ErkJggg==" alt="" />
Client(Writer)端:
#include <windows.h>
#include <stdio.h> LPTSTR SlotName = TEXT("\\\\.\\mailslot\\sample_mailslot"); BOOL WriteSlot(HANDLE hSlot, LPTSTR lpszMessage)
{
BOOL fResult;
DWORD cbWritten; fResult = WriteFile(hSlot,
lpszMessage,
(DWORD)(lstrlen(lpszMessage) + )*sizeof(TCHAR),
&cbWritten,
(LPOVERLAPPED)NULL); if (!fResult)
{
printf("WriteFile failed with %d.\n", GetLastError());
return FALSE;
} printf("Slot written to successfully.\n"); return TRUE;
} int main()
{
HANDLE hFile; hFile = CreateFile(SlotName,
GENERIC_WRITE,
FILE_SHARE_READ,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE)NULL); if (hFile == INVALID_HANDLE_VALUE)
{
printf("CreateFile failed with %d.\n", GetLastError());
return FALSE;
} WriteSlot(hFile, TEXT("Message one for mailslot."));
WriteSlot(hFile, TEXT("Message two for mailslot.")); Sleep(); WriteSlot(hFile, TEXT("Message three for mailslot.")); CloseHandle(hFile); return TRUE;
}
一旦运行Client端往邮件槽中写入数据,Server端就会读取到:
aaarticlea/png;base64,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" alt="" />
参考:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365576%28v=vs.85%29.aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365785%28v=vs.85%29.aspx
http://www.codeproject.com/Articles/13724/Windows-IPC
五,剪切板
剪贴板(Clipped Board)实质是Win32 API中一组用来传输数据的函数和消息,为Windows 应用程序之间进行数据共享提供了一个中介,Windows已建立的剪切(复制)-粘贴的机制为不同应用程序之间共享不同格式数据提供了一条捷径。当用户在 应用程序中执行剪切或复制操作时,应用程序把选取的数据用一种或多种格式放在剪贴板上。然后任何其它应用程序都可以从剪贴板上拾取数据,从给定格式中选择 适合自己的格式。
剪贴板是一个非常松散的交换媒介,可以支持任何数据格式,每一格式由一无符号整数标识,对标准(预定义)剪贴板格式,该值是
Win32 API定义的 常量;对非标准格式可以使用Register Clipboard
Format函数注册为新的剪贴板格式。利用剪贴板进行交换的数据只需在数据格式上一
致或都可以转化为某种格式就行。但剪贴板只能在基于Windows的程序中使用,不能在网络上使用。
OpenClipboard:Opens the clipboard for examination and prevents other applications from modifying the clipboard content.
BOOL WINAPI OpenClipboard(
_In_opt_ HWND hWndNewOwner
);
- hWndNewOwner [in, optional]
-
Type: HWND
A handle to the window to be associated with the open clipboard. If this parameter is NULL, the open clipboard is associated with the current task.
SetClipboardData:Places data on the clipboard in a specified clipboard format. The window must be the current clipboard owner, and the application must have called the OpenClipboard function.
HANDLE WINAPI SetClipboardData(
_In_ UINT uFormat,
_In_opt_ HANDLE hMem
);
GetClipboardData:Retrieves data from the clipboard in a specified format. The clipboard must have been opened previously.
HANDLE WINAPI GetClipboardData(
_In_ UINT uFormat
);
运行程序一,内容拷贝到clipboard中:
#include <iostream>
#include<windows.h>
#include<string.h>
//#include <afx.h>
using namespace std;
void main()
{
string source("Hello Clipboard!"); if (OpenClipboard(NULL))
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.size() + );
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, source.c_str());
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT, clipbuffer);
CloseClipboard(); }
system("pause");
}
运行程序二,可以从clipboard中得到数据:
#include <iostream>
#include <windows.h> void main()
{
char * buffer;
if (OpenClipboard(NULL))
{
buffer = (char*)GetClipboardData(CF_TEXT);
printf("%s\n", buffer);
}
CloseClipboard();
system("pause");
}
得到:
aaarticlea/png;base64,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" alt="" />
即便不利用程序二,我们右键粘贴也可以得到数据:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAABqCAIAAACqF/0bAAACi0lEQVR4nO3YwXHaQACGUXVFOSpLFbgGNeG7j3SQmaQB5aBfQivtyjYZD2R4b3LAG5AW9mMFdB8fH1PD+/v7r99/Pv339vbWOgL/kU4KzKRASIGQAiEFQgqEFAgpEFIgpEBIgZACIQVCCoQUCCkQUiCkQEiBkAIhBUIKhBQIKRBSIKRASIGQwtPpuu4x55XCs5ECIQVCCsSLpHAdLt1luO6H+rH9kLHPI9Yb33AdLt1iefBynMpcjqc+ndq/25xhvSmFlrtTGPvN+s8n6sfpaVNYXwcptNyZQnsZv34cKSwekcLYL/v5MlZNYbvx1xbr7B1/3BXmBameujrensBmeBmdn998kHlsc8D+tVOo2LwaWcBinXY3rsOlfKWPNZy9n+splAGcjzcnMA5LfrcJzE95ncw20uK/XjGF5q5QrN96z0MK+2WuLfv3U9i9tZdPFbXxr0zgdvDyKe/uW14g5rtJobJjVFM4HKJ2MbjnAnF8cH28PYHdM7ilUN0TpkkKJ7tCZfnu2hXOWvg0hfXPxnhrAtvxclcoPwvVd4WVFKbt1XiaprHfBbK9UXvNK6fav+yNL5PF187Ntf90/DiB3Y8E1RSK51h8FvG7wnED/co3iNuH8NMvhsWOvT/gbg2H9b7rbFrjrQncTtcPjV2hvNf4wj8xPaef//3gO6TwQFKYJilM0ySFnFcKz0YKPJgUCCkQUiCkQEiBkAIhBUIKhBQIKRBSIKRASIGQAiEFQgqEFAgpEFIgpEBIgZACIQVCCoQUCCkQUiCkQEiBkAIhBUIKhBQIKRBSIKRASIGQAiEFQgqEFAgpEFIgpEBIgZACIQVCCoQUCCkQUiCkQEiBkAIhBUIKhBQIKRB/AewwL5VR7ZwuAAAAAElFTkSuQmCC" alt="" />
参考:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms648709%28v=vs.85%29.aspx
Windows进程间通信(中)的更多相关文章
- Windows进程间通信的各种方法
原文:Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成.多进程/多线程是Windows操作系 ...
- 在 Windows Phone 中,为 Grid 添加 Tilt 效果
在 Windows Phone 中,Tilt 效果是比较经典的效果,我们可以很简单的为按钮等控件添加这样的效果(使用 Windows Phone Toolkit 的Tilt 效果),但是,如果我们想要 ...
- 如何托管ASP.NET Core应用到Windows Service中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...
- UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究
内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...
- 虚拟机和windows主机中的文件共享
22:54 2015/12/22 虚拟机和windows主机中的文件共享:特别推荐:我的一个老师特别推荐的方法:在windows安装SSH Secure File Transfer Client,直接 ...
- Windows编程中UNICODE和_UNICODE定义问题
Windows编程中UNICODE和_UNICODE定义问题 先转一篇文章: 初学Windows SDK编程时碰到过这个问题,相信很多初学Windows编程的人也都碰到过,后来慢慢搞明白些了,但有时别 ...
- 如何在windows计划中调用备份sharepoint2010网站集的powershell脚本
最近有个项目需要在在windows计划中使用powershell脚本备份sharepoint2010网站集,打开sharepoint的powershell执行命令管理界面的属性 查看: C:\Wind ...
- 【翻译】Windows 10 中为不同设备加载不同页面的3种方法
在以前,为PC和手机做App是两个工程,PC和手机各一个.在Windows 10中会发现只有一个了,对于简单的页面变化可以使用VisualState来解决,但是比如网易云音乐这种PC版和手机版差异巨大 ...
- 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
在某国外大型汽车公司BI项目中,有一个子项目,需要通过大屏幕展示销售报表,程序需要自动启动和关闭.开发人员在开发过程中,发现在Win7的service中不能直接操作UI进程,调查过程中,发现如 ...
- Windows Phone中获取UserAgent
进入WP8时代后,通过DeviceExtendedProperties获取到的DeviceName不再是手机型号了,这对于需要获得手机型号做一些事情的应用(如新浪微博的小尾巴)来说,影响是比较大的. ...
随机推荐
- 找轮转后的有序数组中第K小的数
我们可以通过二分查找法,在log(n)的时间内找到最小数的在数组中的位置,然后通过偏移来快速定位任意第K个数. 此处假设数组中没有相同的数,原排列顺序是递增排列. 在轮转后的有序数组中查找最小数的算法 ...
- invalid receiver type
Because in a case like this: type I int type P *I func (i I) Get() int { return int(i) } func (p P) ...
- 浏览器标题栏添加小logo图片,记录一下,方便以后用
效果如图:这是富连网的logo的实现,只需一行代码,我就写给自己和那些不知道的人吧 <link rel="icon" type="image/x-icon" ...
- 如何在IIS6,7中部署ASP.NET网站(转载)
查看web.config文件 web.config通常会放在网站的根目录,这个文件中包含了一最重要的网站运行参数.比如: connectionStrings,httpHandlers,httpModu ...
- 解决 git extensions 每次提交需要输入用户名和密码
打开git bash 输入用户名和密码 git config --global user.name "username" git config --global user.emai ...
- RabbitMQ队列
AMQP ,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无 ...
- php curl 抓取内容
<?php$ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url)//抓取url curl_setopt($ch,CURLOPT_RETURNTRAN ...
- Tomcat下log4j设置文件路径和temp目录
转自:http://www.cnblogs.com/dkblog/archive/2007/07/27/1980873.html 在Web应用中的如何设置日志文件的路径呢?最笨的方法是写绝对路径,但很 ...
- vs2015下载及预览与发布
VS2015 RC发布下载,通用Windows平台必备神器! 几个月前微软发布了Visual Studio 2015的技术预览版本,之后又先后发布了6个更新版本.如今,微软已在其官方页面中公布了最新开 ...
- HDU 5758 Explorer Bo
思维,树形$dp$. 首先选择一个度不为$0$的节点作为根节点,将树无根转有根. 这题的突破口就是要求瞬间移动的次数最少. 次数最少,必然是一个叶子节点走到另一个叶子节点,然后瞬间移动一次,再从一个叶 ...