الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إستدعاء كود(دالة) من ملف و تشغيله

مغلق
بدأه nadir02 في 23 ديسمبر 2012 · 1 رد · 716 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

حاولت ان اقوم بإستدعاء دالة داخل ملف ما عن طريق

هذا الشيئ

#include <iostream>
#include <windows.h>

using namespace std;

struct Object
{
	int x,y;
	DWORD color;
};

typedef INT (CALLBACK* ACTION)(HWND,Object*);

#define MAX_SIZE 251


LONG SaveFile(LPSTR name,LPVOID buffer,DWORD size);
LONG LoadFile(LPSTR name,LPVOID buffer,DWORD size);

int CALLBACK func1(HWND hwnd,Object* object)
{
	object->x += 1;
	object->y += 1;
	object->color = 0xffff00ff;

	return TRUE;
}

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT)
{
	//SaveFile("h.bin",(LPVOID)func1,MAX_SIZE);
	BYTE Action[MAX_SIZE];
	LoadFile("h.bin",(LPVOID)Action,MAX_SIZE);
	ACTION action = (ACTION)&Action;

	Object obj;obj.x = 0;obj.y = 0;

	action(NULL,&obj);
	return 0;
}


LONG SaveFile(LPSTR name,LPVOID buffer,DWORD size)
{
	HANDLE File = CreateFile(name,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
	if(!File)
		return FALSE;
	DWORD dwSise;
	if(!WriteFile(File,buffer,size,&dwSise,0))
	{
		CloseHandle(File);
		return FALSE;
	}
	CloseHandle(File);
	return TRUE;
}

LONG LoadFile(LPSTR name,LPVOID buffer,DWORD size)
{
	HANDLE File = CreateFile(name,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
	if(!File)
		return FALSE;
	DWORD dwSise;
	if(!ReadFile(File,buffer,size,&dwSise,0))
	{
		CloseHandle(File);
		return FALSE;
	}
	CloseHandle(File);
	return TRUE;
}

هذا الكود يشتغل عادي ولكن عندما اضيف مثلا messagebox الى الدالة (func1)

واحذف Savefile (بعد ان حصلت على الملف) تحدث مشكلة :huh:

؟؟؟؟؟.

هذا الموضوع مغلق.

مواضيع مشابهة