锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍦ㄨ繖閲屼粙緇嶄笅絎笁縐嶆柟寮忥紝涔熷氨鏄浣曡涓涓猠xe紼嬪簭鍔犺澆澶氫釜DLL璧勬簮錛屽茍鍦ㄨ繖浜汥LL涓壘鐩稿簲鐨勮祫婧愮殑闂錛?br> m_hResDll = ::LoadLibrary(_T("rc1.dll"));
m_hResDll2 = ::LoadLibrary(_T("rc2.dll"));
m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
AfxSetResourceHandle(m_hResDll);
m_pExeModule2 = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
AfxSetResourceHandle(m_hResDll2);
鍦ㄨ繖閲屽煎緱娉ㄦ剰鐨勬槸錛氳璋冪敤
m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
榪欎釜璇彞錛屽鏋滄病鏈夎繖涓鍙ワ紝閭d箞榪欎釜紼嬪簭鐨勫師鏈夎祫婧愭ā鍧楀皢瑙嗕負閲婃斁銆備篃灝變笉浼氬埌鍘熸湁鐨勮祫婧愭ā鍧椾腑鍘繪悳绱€?br>
鍦ㄨ繖涓紑鍙戠殑榪囩▼涓紝鎴戣嚜璁や負瀵規暣涓繃紼嬫槸娓呮櫚鐨勶紝鏄庝簡鐨勩備絾鏄湪寮鍙戠殑榪囩▼涓嵈鍥犱竴涓粏鑺傞棶棰樿岃揩浣挎垜鑺變簡鏁存暣涓涓笂鍗堢殑鏃墮棿鏉ヨ皟璇曪紝鏈鍚庡緱浠ュ彂鐜拌繖涓棶棰樸傝繖閲屾垜灝辯畝鍗曞湴鍥為【榪欎釜寮鍙戣繃紼嬨?/span>
1錛氬埄鐢ㄥ悜瀵間駭鐢?/span>MFC Regular DLL 妗嗘灦銆?/span>
2錛氬湪app鏂囦歡涓姞鍏ヤ竴涓鍑虹殑鍝戝嚱鏁幫紙灝辨槸浠涔堜簨涔熶笉鍋氱殑鍑芥暟錛夋潵璁╄繖涓?/span>DLL鏀寔闅愬紡鐨勫姞杞?/span>.
濡?/span> extern “C” __declspec(dllimport) DummyExport() {}
3: 娣誨姞涓涓嚜CWnd媧劇敓鐨勭被錛屽氨鍙?/span>MyCWnd濂戒簡銆?/span>
4錛氫負榪欎釜MyApp鏄犲皠娑堟伅銆傚鏄犲皠涓涓?/span>OnLButtonDown銆傚茍鍦ㄨ繖涓秷鎭腑鍚戠埗鎺т歡鍙?br> 鍑鴻嚜宸辯殑娑堟伅錛堝綋鐒跺疄闄呴」鐩腑鍙笉浼氭槸榪欐牱綆鍗曪紝榪欓噷鍙槸璁╂帶浠剁殑妗嗘灦
鍏堣兘璺戣搗鏉ヨ瘉鏄庝笌澶栫晫鐨勬秷鎭槸鐣呴氱殑錛?/span>
GetParent()->SendMessage(WM_COMMAND, GetCtrlID(), GetSafeHwnd());
5: 鑷畾涔変竴涓秷鎭?/span> #define WM_MYWNDLAUGH (WM_USER + 106)騫跺畬鎴愮浉搴旂殑鏄犲皠銆?/span>
6錛氫負浜嗘敞鍐岃繖鑷繁鐨勮繖涓獥浣撶被鍒紝鎴戜滑蹇呴』鏈変竴涓潤鎬佺殑娉ㄥ唽鍑芥暟錛?br> 浠ヤ究鍦?/span>CWinApp::InitInstance鏃舵敞鍐岀獥浣撶被銆?/span>
榪欓噷灝辨槸鍏抽敭浜?br>
8: 鍦ㄤ嬌鐢ㄨ呯晫闈腑娣誨姞鑷畾涔夋帶浠訛紝鎺т歡鐨勭被鍒氨鏄笂闈㈢殑wc.lpszClassName瀵瑰簲鐨勫悕縐般?/span>
9: 鍦ㄤ嬌鐢ㄨ呯被涓槧灝勫瓙鎺т歡娑堟伅
10:鍦ㄦ棭鏈熷氨璋冪敤涓婅堪鐨勫搼鍑芥暟銆?/span>
11:鍚戣嚜瀹氫箟鎺т歡鍙戦佹秷鎭傝繖鏍峰氨鎼搗浜嗕竴涓嚜瀹氫箟鎺т歡鐨勬鏋訛紝鍦ㄤ笂闈㈢殑榪欎簺姝ヨ仛涓氨鏄?br> 絎紪姝ヨ緇嗗績銆備綑涓嬬殑灝辨槸鍔犵壒鎬х殑宸ヤ綔浜嗐備笂榪板弬鑰冧簡MFC鎶鏈唴騫曠瓑鏈夊叧璧勬枡銆?/span>
#pragma data_seg("Shared")
volatile LONG g_lApplicationInstances = 0;
#pragma data_seg()
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE ,
LPSTR lpCmdLine,
int nCmdShow)

{
InterlockedExchangeAdd((PLONG)&g_lApplicationInstances, 1);
//do some work
InterlockedExchangeAdd((PLONG)&g_lApplicationInstances, -1);
return 0;
}
姣忓綋榪涘叆涓誨嚱鏁幫紝鎴戝氨瀵硅繖涓鏁板櫒榪涜閫掑涓嬈★紝姣忔紱誨紑鍓嶆垜灝卞噺灝戜竴銆傛垜瑕佺殑鏃跺欐垜灝卞湪紼嬪簭涓洿鎺ュ彇榪欎釜璁℃暟鍣ㄥ氨琛屼簡銆傝繖鏍鋒垜寰堝ソ鍦拌揪鍒頒簡鎴戠殑鐩爣銆傚綋鐒舵妸榪欎釜鏁版嵁孌墊斁鍦ㄦ煇涓叡浜殑DLL涓殑涔熸槸鍙互鐨勶紝榪欎釜涓轟粈涔堣兘澶熷疄鐜拌繕寰椾粠PE鏂囦歡鏉ヨ銆傚湪榪欓噷鎴戝彧瑕佺煡閬撹繖浜涘畯浼氬湪鐢熸垚PE鏂囦歡鏃朵細榪欐妸榪欎釜孌墊斁鍒板叡浜涓幓錛岃繖鏍穡indows鍦ㄥ姞杞藉涓椂騫朵笉浼氬榪欎釜鏁版嵁孌佃繘琛屽浠藉鍒跺氨琛屼簡銆?br>
//////////////////////////////////////////////////////////////////////////
#define DEFAULT_BUFLEN 512
#define DEFAULT_PORT "27015"
//////////////////////////////////////////////////////////////////////////
int main()
{
WSADATA wsaData;
SOCKET listenSocket = INVALID_SOCKET;
SOCKET clientSocket = INVALID_SOCKET;
char recvBuf[DEFAULT_BUFLEN];
int iResult,iSendResult;
int recvBuflen = DEFAULT_BUFLEN;
iResult = WSAStartup(MAKEWORD(2,0),&wsaData);
if(iResult)
{
printf("WSASTATUP failed!\n");
return 1;
}
listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(listenSocket == INVALID_SOCKET)
{
printf("socket failed:%ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
sockaddr_in saServer;
saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = inet_addr("127.0.0.1");
saServer.sin_port = htons(5150);
iResult = bind(listenSocket,(sockaddr *)&saServer, sizeof(saServer));
if(iResult == SOCKET_ERROR)
{
printf("bind failed!");
closesocket(listenSocket);
WSACleanup();
return 1;
}
iResult = listen(listenSocket, SOMAXCONN);
if(iResult == SOCKET_ERROR)
{
printf("LISTEN failed!");
closesocket(listenSocket);
WSACleanup();
return 1;
}
printf("Wait client connect");
clientSocket = accept(listenSocket, NULL, NULL);
if(clientSocket == INVALID_SOCKET)
{
printf("accept failed!");
closesocket(listenSocket);
WSACleanup();
return 1;
}
closesocket(listenSocket);
printf("Now wait the data arrive...\n");
do
{
iResult = recv(clientSocket, recvBuf, recvBuflen, 0);
if(iResult > 0)
{
printf("Bytes received:%d\n",iResult);
iSendResult = send(clientSocket, recvBuf, iResult, 0);
if(iSendResult == SOCKET_ERROR)
{
printf("send failed");
closesocket(clientSocket);
WSACleanup();
return 1;
}
else if (iResult == 0)
{
printf("Connect closed!");
}
else
{
printf("recv failed");
closesocket(clientSocket);
WSACleanup();
return 1;
}
}
} while(iResult > 0);
iResult = shutdown(clientSocket, SD_SEND);
if(iResult == SOCKET_ERROR)
{
printf("shut dowm failed!");
closesocket(clientSocket);
WSACleanup();
return 1;
}
closesocket(clientSocket);
WSACleanup();
getchar();
return 0;
}
//瀹㈡埛绔?br>#include <stdlib.h>
#include <stdio.h>
#include <WINSOCK2.H>
#include <WS2TCPIP.H>
#include <windows.h>
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#define DEFAULT_BUFLEN 512
#define DEFAULT_PORT "27015"
//////////////////////////////////////////////////////////////////////////
int main()
{
WSADATA wsaData;
SOCKET connectSocket = INVALID_SOCKET;
char *sendBuf = "This is a test";
char recvBuf[DEFAULT_BUFLEN];
int iResult;
int recvBufLen = DEFAULT_BUFLEN;
// if(argc != 2)
// {
// printf("useage:%s server -name\n",argv[0]);
// return 1;
// }
iResult = WSAStartup(MAKEWORD(2,0),&wsaData);
if(iResult)
{
printf("WSASTATUP FAILED.");
return 1;
}
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(5150);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
connectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(connectSocket == INVALID_SOCKET)
{
printf("Error at socket!");
WSACleanup();
return 1;
}
iResult = connect(connectSocket, (sockaddr *)&addr, sizeof(addr));
if(iResult == SOCKET_ERROR)
{
printf("Connect failed!");
WSACleanup();
return 1;
}
iResult = send(connectSocket, sendBuf, (int)strlen(sendBuf), 0);
if(iResult == SOCKET_ERROR)
{
printf("Send failed");
closesocket(connectSocket);
WSACleanup();
return 1;
}
printf("Bytes send.");
iResult = shutdown(connectSocket, SD_SEND);
if(iResult == SOCKET_ERROR)
{
printf("shut down failed");
closesocket(connectSocket);
WSACleanup();
return 1;
}
do
{
iResult = recv(connectSocket, recvBuf, recvBufLen, 0);
if(iResult > 0)
{
printf("Bytes received:%d\n",iResult);
}
else if(iResult == 0)
{
printf("connect closed");
}
else
{
printf("Recv failed");
}
} while(iResult > 0);
closesocket(connectSocket);
WSACleanup();
return 0;
}
娉ㄦ剰瑕佸姞鍏ラ摼鎺ュ簱WS2_32.lib
#ifndefine _XIAO_TOOLHELP_H_
#define _XIAO_TOOLHELP_H_
#include <TLHELP32.H>
#include <tchar.h>
/**///////////////////////////////////////////////////////////////
class CToolHelp

{
public:
CToolHelp(DWORD dwFlags = 0,DWORD dwProcessId = 0);
~CToolHelp();
BOOL CreateSnapshot(DWORD dwFlags,DWORD dwProcessId = 0);
BOOL ProcessFirst(PPROCESSENTRY32 ppe);
BOOL ProcessNext(PPROCESSENTRY32 ppe);
BOOL ProcessFind(DWORD dwProcessId,PPROCESSENTRY32 ppe) ;
}錛?br>19
#endif

/**////////////////////////////////////////////////////////////////////////////////
CToolHelp::CToolHelp(DWORD dwFlags,DWORD dwProcessId)

{
m_hSnapshot=INVALID_HANDLE_VALUE;
CreateSnapshot(dwFlags,dwProcessId);
}

/**///////////////////////////////////////////////////////////////////////////////
CToolHelp::~CToolHelp()

{
if(m_hSnapshot != INVALID_HANDLE_VALUE)
{
CloseHandle(m_hSnapshot);
}
}

/**///////////////////////////////////////////////////////////////////////////////
BOOL CToolHelp::CreateSnapshot(DWORD dwFlags,DWORD dwProcessId)

{
if(m_hSnapshot != INVALID_HANDLE_VALUE)
{
CloseHandle(m_hSnapshot);
}
if(dwFlags == 0)
{
m_hSnapshot = INVALID_HANDLE_VALUE;
}
else
{
m_hSnapshot = CreateToolhelp32Snapshot(dwFlags,dwProcessId);
}
return m_hSnapshot != INVALID_HANDLE_VALUE;
}

/**/////////////////////////////////////////////////////////////////////////////
BOOL CToolHelp::ProcessFirst(PPROCESSENTRY32 ppe)

{
BOOL fOk = Process32First(m_hSnapshot,ppe);
if (fOk && (ppe->th32ParentProcessID==0))
{
fOk = ProcessNext(ppe);
}
return fOk;
}

/**/////////////////////////////////////////////////////////////////////////////
BOOL CToolHelp::ProcessNext(PPROCESSENTRY32 ppe)

{
BOOL fOk = Process32Next(m_hSnapshot,ppe);
if (fOk && (ppe->th32ParentProcessID==0))
{
fOk = ProcessNext(ppe);
}
return fOk;
}

/**///////////////////////////////////////////////////////////////////////////////
BOOL CToolHelp::ProcessFind(DWORD dwProcessId,PPROCESSENTRY32 ppe)

{
BOOL fFound = FALSE;
for(BOOL fOk=ProcessFirst(ppe); fOk ;fOk = ProcessNext(ppe))
{
fFound = (ppe->th32ProcessID == dwProcessId);
if(fFound)
{
break;
}
}
return TRUE;
}
#include <iostream.h>
int main()

{
int i=2;
if(2==i)
{
i++;
}
return i;
}
#include "stdafx.h"
#include <windows.h>
#include <iostream.h>
int main(int argc, char* argv[])

{
DWORD dwCurrentId,dwControlId;
dwCurrentId=GetCurrentProcessId();
cout<<"Current process Id: "<<dwCurrentId<<endl;
HWND hwnd=FindWindow("SciCalc",NULL);
GetWindowThreadProcessId(hwnd,&dwControlId);
HANDLE controlHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwControlId);
cout<<"Calc Process Id :"<<dwControlId<<endl;
//PostMessage(hwnd,WM_QUIT,0,0);
TerminateProcess(controlHandle,0);
return 0;
}
// CreateProcess.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "shellapi.h"
//#pragma comment(lib,"shell32.lib") 濡傛灉鍦ㄩ摼鎺ラ」涓病鏈夎緗紝灝卞湪榪欓噷鍔犱笂榪欎釜閾炬帴銆?br> 9
/*******************************************************************************
// printf the help message
//
******************************************************************************/
void Help()
{
printf("Here are there some create process method!\n");
printf("1:Use winexec.\n");
printf("2:Use ShellExecute.\n");
printf("3:Use ShellExecuteEx.\n");
printf("4:Use CreateProcess.\n");
printf("Q:Quit the application.\n");
}
int main(int argc, char* argv[])
{
bool bQuit=false;
UINT uCode=0;
SHELLEXECUTEINFO Info;
STARTUPINFO startInfo;
PROCESS_INFORMATION pInfo;
while(!bQuit)
{
Help();
char ch=getchar();
getchar();
switch(ch)
{
case '1':
uCode=WinExec("notepad.exe",SW_SHOW);
break;
case '2':
uCode=(UINT)ShellExecute(NULL,"open","notepad.exe",NULL,NULL,SW_SHOW);
break;
case '3':
{
memset(&Info,0,sizeof(Info));
Info.cbSize=sizeof(Info);
Info.lpVerb="open";
Info.lpFile="notepad.exe";
Info.lpParameters=NULL;
Info.fMask=SEE_MASK_NOCLOSEPROCESS;
Info.nShow=SW_SHOWDEFAULT;
ShellExecuteEx(&Info);
}
break;
case '4':
{
memset(&startInfo,0,sizeof(startInfo));
startInfo.cb=sizeof(startInfo);
CreateProcess(NULL,"notepad.exe",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&startInfo,&pInfo);
}
break;
case 'Q':
bQuit=true;
break;
default:
break;
}
}
return 0;
}涓婇潰鐨勭ず渚嬩唬鐮佸氨榪欎箞灝戯紝褰撶劧浣跨敤璧鋒潵涓嶄細璞℃枃绔犱腑榪欐牱綆鍗曪紝浣嗘槸鍏抽敭鐨勪篃灝辨槸榪欎簺浜嗐傚鍒涘緩榪涚▼灝辨槸榪欎箞綆鍗曘?br> 鎴戝緢鍠滄鐜╀袱涓漢姣旀鐨勬父鎴忥紝鍦ㄥ叾涓垜鍙栧緱浜嗗緢澶氱殑涔愯叮錛岀粰寮娓告垙鍘呯殑鑰佹澘灝戒簡韜負鐑灝戝勾鐨勪竴浠藉績錛屼篃涓哄浗瀹跺涓浠界◣鏀躲傛垜鐜╃殑瑙掕壊姝﹀姛濂楄礬涔熷氨鍙湁榪欎箞鍑犳嫑錛屾嫑寮忔槸綆鍗曚簡浜涳紝浣嗗緢鏈夌敤錛屼笉鏄悧錛熸垜緇忓父涓や釜閾滅墝灝卞彲浠ョ帺涓婁竴涓や釜鏃舵椂杈般?br>
鈫?/span>↑ 鈫?/span>
灝辯華 ← 闃誨
↓ ↑ ↑↓