Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2011, 00:49   #1
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос Конвертация кода AutoIT в DELPHI

Всем доброго времени суток!

Хотелось бы переписать код AutoIT в Delphi.

Код:
;So you know what the hell the offsets are...
;BASE_STATIC_POINTER = 0x89ACC0 + 0x8;
; MASK_OFFSET = 0x024;            
;BASE_OFFSET = 0x01c;            
;STRING_OFFSET = 0x020
;...below

Func _GetPlayerName($fGUID = $pGUID)
	$mask = _MemoryRead($WowBase + 0x89ACC0 + 0x8 + 0x024, $wow)
	$base = _MemoryRead($WowBase + 0x89ACC0 + 0x8 + 0x01c, $wow)
	$shortGUID = BitAND($fGUID, 0xffffffff)
	if ($mask = 0xffffffff) Then
		Return ""
	EndIf
	$offset = 12 * BitAND($mask, $shortGUID)
	$current = _MemoryRead($base + $offset + 8, $wow)
	$offset = _MemoryRead($base + $offset, $wow) 
	if (BitAND($current, 0x1) = 0x1) Then

		Return ""
	EndIf
	$testGUID = _MemoryRead($current, $wow)
	while ($testGUID <> $shortGUID)
		$current = _MemoryRead($current + $offset + 4, $wow)
		if (BitAND($current, 0x1) = 0x1) Then
			Return ""
		EndIf
		$testGUID = _MemoryRead($current, $wow)
	WEnd
	Return _MemoryRead($current + 0x020, $wow, "char[20]")
EndFunc   ;==>_GetPlayerName
Вот что у меня получилсоь :
Код:
function _GetPlayerName(pGUID:UInt64):string;
const BASE_STATIC_POINTER = $89ACC0 + $8;
const MASK_OFFSET = $024;
const BASE_OFFSET = $01c;
const STRING_OFFSET = $020;
var mask,base,offset,current:DWORD;
wread:Cardinal;
shortGUID,testGUID:UInt64;
ccc:array [1..20] of Char;
begin

  ReadProcessMemory(WoW_H_Proc,Ptr(WowBase + $89ACC0 + $8 + $024),@mask,SizeOf(mask),wread);
  ReadProcessMemory(WoW_H_Proc,Ptr(WowBase + $89ACC0 + $8 + $01c),@base,SizeOf(base),wread);


	shortGUID := pGUID and  $ffffffff;
	if (mask = $ffffffff) Then
  Result := '';

	offset := 12 * (mask  and shortGUID);
 ReadProcessMemory(WoW_H_Proc,Ptr(base + offset + $8),@current,SizeOf(current),wread);

 ReadProcessMemory(WoW_H_Proc,Ptr(base + offset),@offset,SizeOf(offset),wread);
	if ((current and $1) = $1) Then

  Result := '';

  ReadProcessMemory(WoW_H_Proc,Ptr(current),@testGUID,SizeOf(testGUID),wread);

	while (testGUID <> shortGUID) do
  begin
  ReadProcessMemory(WoW_H_Proc,Ptr(current + offset + 4),@current,SizeOf(current),wread);


		if ((current and $1) = $1) Then
    Result := '';
    ReadProcessMemory(WoW_H_Proc,Ptr(current),@testGUID,SizeOf(testGUID),wread);
  end;
  ReadProcessMemory(WoW_H_Proc,Ptr(current+$20),@ccc,SizeOf(ccc),wread);
Result := ccc;
end;
Я на 99% уверен что я напутал с типами... В Autoit вообще ничего не понятно
Постарался удалить пустые точки для экономии места.

Спасибо за помощь!
Lime вне форума Ответить с цитированием
Старый 21.08.2011, 14:20   #2
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Тема всё ещё актуальна.
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация AutoIT в DELPHI. Lime Помощь студентам 4 17.08.2011 17:09
Delphi конвертация неизвестно типа в string world12_tk Помощь студентам 2 13.03.2011 12:49
Конвертация String в PAnsiChar в Delphi vandrouny Помощь студентам 5 28.10.2010 22:27
Конвертация Delphi->C# templllar Помощь студентам 0 21.12.2009 11:08
Конвертация раскладки текста (Delphi) ekzobyte Помощь студентам 1 24.05.2009 17:29