HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

World Editor Helper

05-27-2006, 11:36 PM#1
Zoxc
I'm just having fun messing with the World Editor. The only thing this can do for now is to change the font of the JASS editor. You use it by starting WEHelper.exe. It will load the World Editor and add a new menu. I've planned a few other features, but input would be appreciated.

Planned features:
- A menu where you can add different programs (Like a mini start menu).
- More stuff for the JASS Editor.
- A XP theme enabler. (See Nantuko Husk’s nice little thread for more info)

Might add features:
- Tabs for opened maps.
- Optimize map (Calls other optimizing tools)
05-28-2006, 03:09 PM#2
xttocs
Dll injection eh?
05-30-2006, 12:11 AM#3
PitzerMike
This will sure be useful, once the mentioned features are implemented.
06-05-2006, 09:42 PM#4
Zoxc
A updated version. Loader by xttocs.

Features:
- Change map launch parameters
- Remove udg_ variable prefix
- Change font of jass editor.

See Helpers\AlphaHelper.ini for settings.

How this works:
WEHelper.exe start the World Editor and loads WEHelper.dll into it. WEHelper.dll loads all the .dll in the Helpers\ folder. WEHelper.dll calls the Helper_Call function in the user dll. WEHelper contains information that the user dll can call to get. The Callback points to a THCallback function. To get the process with all access call Callback(H_PROCESS, 0, 0). It will return the handle to the process.


Code:
unit HelperAPI;

interface

type
THCallback = function(Reason, Param1, Param2:Cardinal):Cardinal;
THCall = function(Reason, Param1, Param2:Cardinal; Callback:Cardinal):Cardinal;

const
// THCall Reasons
H_INIT = 0;
H_EXIT = 1;
H_GETNAME = 2;
H_KNOWWE = 3;
H_CONFIG = 4;

// THCallback Reasons
H_UNIQUEID = 0;
H_PROCESS = 1;

H_CALL = 'Helper_Call';

implementation

end.

Helper Framework:
Code:
unit HelperFramework;

interface

uses Windows;

const
GlobalVariablePrefix_Address: DWord = $7DAAA8;
LaunchParamenter_Address: DWord = $4D7B51;
LaunchParamenter: DWord = $7BDA60;

var Process: Cardinal;

procedure UseGlobalVariablePrefix(Enable:Boolean);
procedure SetMapLaunchParameters(Parameters:String);

implementation

procedure SetMapLaunchParameters(Parameters:String);
var Data:Byte;
    Write:Cardinal;
    WriteAddress, StrLoop,StrLength: Cardinal;
begin
    Data := $60;

    WriteProcessMemory(Process, Pointer(LaunchParamenter_Address), @Data, 1, Write);

    StrLength := Length(Parameters);
    for StrLoop := 0 to StrLength do
    begin
        if (StrLoop >= StrLength) then
            Data := 0
        else
        Data := Byte( Parameters[StrLoop+1] );
        WriteAddress := LaunchParamenter + StrLoop;

        WriteProcessMemory(Process, Pointer(WriteAddress), @Data, 1, Write);
    end;
    
end;

procedure UseGlobalVariablePrefix(Enable:Boolean);
var Data:Byte;
    Write:Cardinal;
begin
 if Enable then
    Data := $75
 else
    Data := $00;
 WriteProcessMemory(Process, Pointer(GlobalVariablePrefix_Address), @Data, 1, Write);
end;

end.

Demo User Dll:
Code:
library DemoHelper;

uses
  Windows, Messages, HelperAPI;


function Helper_Call(Reason, Param1, Param2:Cardinal; Callback:Cardinal):Cardinal;
var S:String;
begin
case Reason of
 H_INIT:  // Before WE Starts
     begin
     end;

 H_KNOWWE: // Once the main window is created
     begin

     end;
 H_GETNAME: // When the config dialog wants helper name.
     begin

       if Param1 = 0 then
        Result := 1 // Yes we want to list this helper in the configure list
       else
        begin
          S := 'Demo Helper'; // String to add to the configure list
          Result := Integer(Pointer(PChar(S)));
        end;

     end;
 H_EXIT: // When WE exists
     begin

     end;
end;
end;

exports Helper_Call;
begin
end.
06-18-2006, 04:42 PM#5
Zoxc
*update*

Manager.exe updates/downloads the helpers. Use WEHelper.exe to use them with WE.

____
JassPreprocessor
A helper which can use #import in jass code in WE. #include <test> will load the file test.j that should be placed in WEHelper.exe's root folder + "Lib\". If you write #include "C:\test.j" it will load "C:\test.j".
Attached Files
File type: zipWEHMan.zip (309.0 KB)
06-19-2006, 10:16 AM#6
Blade.dk
The menu it adds to the WE, seems to crash it when used. At least for me.