WinApi学习笔记-HellowWorld

在vs2008中新建一个VC++的空项目
在解决方案资源管理器,源文件文件夹中添加一个CPP文件
在此文件中输入以下代码

#include <windows.h>
int WinMain(
			HINSTANCE hInstance,
			HINSTANCE hPreInstance,
			LPSTR lpCmdLine,
			int nCmdShow
			)
{
	MessageBox(NULL,TEXT("HELLOW WORLD"),TEXT("XLAND"),MB_OK);
	return 0;
}

启动调试,运行成功!

如果你装的是VS2008/2005专业版或者团队版,那么上述代码能成功运行
如果是其他版本的VS可能要下载platform  SDK,关于这些我就不多说了
有需要我详细解释的请在此文下留言

先解释程序
#include <windows.h>
引入windows.h文件,此文件中定义了MessageBox函数

int WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
WinMain函数是程序的入口点,windows操作系统执行一个程序的时候,从这里进入程序
HINSTANCE  hInstance 应用程序本次运行的实例句柄
HINSTANCE hPreInstance  应用程序之前运行的实例句柄,此处一般为NULL
LPSTR lpCmdLine  命令行的参数
int nCmdShow  应用程序窗口(如果有)的显示状态

MessageBox的函数原型是
MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption,UINT uType)
HWND hWnd   消息框所属窗口的句柄
LPCTSTR lpText    显示的消息
LPCTSTR lpCaption   标题
UINT uType   消息框的类型

return 0;
WinMain函数的返回值是int型,这里是把0返回给操作系统

另:
这里涉及到一个句柄的概念
windows系统中有很多对象,所有表示一个对象的数据类型都是句柄

时间: 2024-10-10 12:37:01

WinApi学习笔记-HellowWorld的相关文章

WinApi学习笔记-创建进程

#include <windows.h> #include <stdio.h> #include <iostream> DWORD CreateChildProcess(LPSTR szChildProcessCmd); int main() { CreateChildProcess("Child.exe"); } DWORD CreateChildProcess(LPSTR szChildProcessCmd) { //启动信息结构变量 START

WinApi学习笔记-简单的数据类型

#include <windows.h> #include <stdio.h> int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { LPSTR szString = "Windows data type string"; CHAR lpString[120]; DWORD dwMax = 0xFFFFFFFF; DWORD dwOne

WinApi学习笔记-内存管理

一:进程虚拟地址空间的实现 每个进程都有一个私有的虚拟地址空间 系统将每个进程的虚拟地址空间映射到物理内存上 为了实现每个进程都有一个私有的虚拟地址空间系统为每个进程都创建了一个页目录和一组页表 每个进程的页表是独立的 而内核空间的页表是所有进程共享的 X86平台上有一个CR3寄存器,该寄存器保存当前运行的进程的页目录地址 系统进行进程切换时,会将CR3内的地址置为将要执行的进程的页目录地址 每个进程都有一个KPROCESS结构的属性,其中包括了进程页目录地址 二:数据共享与保护 有一些进程间共

WinApi学习笔记-第一次离内存这么近

  Code#include <windows.h>#include <stdio.h>#include <iostream>using namespace std; //参数1堆句柄,参数2内存地址指针DWORD PrintHeapSize(HANDLE hHeap,LPVOID lpMem){    SIZE_T dwHeapSize;    dwHeapSize = HeapSize(hHeap,HEAP_NO_SERIALIZE,lpMem);    if(dw

WinApi学习笔记-分配和释放虚拟内存

Code#include <windows.h>#include <stdio.h>#include <iostream> using namespace std; int main(void){    SIZE_T sizeVirtual = 4000;//大小    LPVOID lpRound = (LPVOID)0x100000FF;//地址    MEMORY_BASIC_INFORMATION mbi;//内存信息     //分配内存    //MEM_C

MFC学习笔记-HellowWorld

VS2008->新建->vsual c++->常规->空项目 添加个头文件,代码如下 class CMyApp:public CWinApp { public: virtual BOOL InitInstance(); }; class CMyFrame:public CFrameWnd { public: CMyFrame(); protected: afx_msg void OnLButtonDown(UINT NfLAGS,CPoint point); afx_msg voi

WinApi学习笔记-读写文件

读文件 #include <windows.h> #include <stdio.h> #include <iostream> DWORD MyReadFile(LPSTR filePath) { HANDLE hFileRead; LARGE_INTEGER liFileSize; DWORD dwReadSize; LONGLONG liTotalRead = 0; BYTE lpFileDataBuffer[32]; hFileRead = CreateFile(

Windows Shellcode学习笔记——Shellcode的提取与测试

本文讲的是Windows Shellcode学习笔记--Shellcode的提取与测试, 0x00 前言 之前在<Windows Shellcode学习笔记--通过VisualStudio生成shellcode>介绍了使用C++编写(不使用内联汇编),实现动态获取API地址并调用,对其反汇编提取shellcode的方法,并开源了测试代码. 接下来在对shellcode进行提取的过程中,发现了当时开源代码的一些bug,所以本文着重解决测试代码的bug,并介绍使用C++开发shellcode需要考

Windows Shellcode学习笔记——利用VirtualAlloc绕过DEP

本文讲的是Windows Shellcode学习笔记--利用VirtualAlloc绕过DEP, 0x00 前言 接着介绍DEP绕过的另一种方法--利用VirtualAlloc绕过DEP.通过VirtualAlloc函数可以申请一段具有可执行属性的内存,相比于VirtualProtect,传入VirtualAlloc的四个参数不需要先读取再赋值,可在shellcode中直接指定,结构更简单.当然,利用Immunity Debugger的mona插件可自动构造利用VirtualAlloc绕过DEP