step1:新建一个Console App工程(其他工程也行),勾选编译模块选项
step2:新建一个模块,命名b.asm。
下面是Test3.asm(主模块)的源代码:
.386
.model flat, stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user...
分类:
其他好文 时间:
2014-10-03 15:35:34
阅读次数:
305
procedure TForm2.Button1Click(Sender: TObject); function EnumWindowsProc(Ahwnd: hwnd; AlParam: lParam): Boolean; stdcall; begin ShowMessage('hwnd...
分类:
其他好文 时间:
2014-10-02 07:57:52
阅读次数:
418
library?EN;
uses
??SysUtils,
??Classes,
??UnitFormEN?in?‘UnitFormEN.pas‘?{FormEN};
{$R?*.res}
function?GetJobType(p:?PChar):?Boolean;?stdcall;
var
??str:?string;
begin
??str?:...
分类:
其他好文 时间:
2014-09-22 20:16:33
阅读次数:
219
不退出: 1 #include 2 #include 3 4 5 unsigned __stdcall _threadfun(void* pParam) 6 { 7 while(TRUE) 8 { 9 printf("hello world");10 ...
分类:
编程语言 时间:
2014-09-16 13:59:50
阅读次数:
223
在VC SDK的WinDef.h中,宏WINAPI被定义为__stdcall,这是C语言中一种调用约定,常用的还有__cdecl和__fastcall。这些调用约定会对我们的代码产生什么样的影响?让我们逐个分析。首先,在x86平台上,用VC编译这样一段代码: 1 int __cdecl TestC(...
1. 介绍__cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 ...
分类:
其他好文 时间:
2014-08-29 18:08:58
阅读次数:
153
可能原因: 调用方式约定不一致。函数调用约定如下:1. __cdecl:C 和 C++ 程序的缺省调用规范。2. __stdcall:标准调用约定(即WINAPI调用约定),也就是pascal调用约定。如果VC调用时,调用的约定方式和delphi的dll中函数约定方式不一致,就会出问题。
分类:
其他好文 时间:
2014-08-26 22:56:16
阅读次数:
218
(转)关于C/C++函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。VC中默认调用是__cdecl方式,Windows API使用__stdcall调用方式,在DLL导出函数中,为了跟Windows API保持一致,建议使用__stdcall方式。调用约定跟堆栈...
分类:
其他好文 时间:
2014-08-23 20:15:01
阅读次数:
228
var EIP: Cardinal; procedure GetEIP(); stdcall;asm pop eax; mov EIP,eax; push eax;end; procedure TForm1.Button1Click(Sender: TObject);begin GetEI...
分类:
其他好文 时间:
2014-08-23 13:55:40
阅读次数:
163
function EnumWindowsProc(hwnd: HWND; lparam: LPARAM): Boolean; stdcall;var buf: array[Byte] of Char;begin Result:= True; GetWindowText(hwnd, buf, S...
分类:
其他好文 时间:
2014-08-19 20:31:55
阅读次数:
269