PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] int to uint convertieren



Darkraiser
10.02.2010, 14:15
Hallo erstmal,

vllt passt mein Titel nicht perfekt .. aber es zeigt vllt die problem lage an.

Ich versuche meine DLL mit setWindowhookex zu aktivieren .. bekomme meine Daten einfach nicht rübergeschickt. Da ich meinen Integer nicht zu einem Unsigned integer Convertieren kann.

hier mal der Code



class Loadlibrary
{

[DllImport("kernel32")]
public extern static int LoadLibrary(string librayName);

[DllImport("kernel32", CharSet = CharSet.Ansi)]
public extern static int GetProcAddress(int hwnd, string procedureName);

[DllImport("user32.dll",CharSet=CharSet.Auto,
CallingConvention=CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn,
IntPtr hInstance, int threadId);


public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);

public const int WH_DEBUG = 9;



int load(string path)
{
const int hwnd = LoadLibrary(path);
int addr = GetProcAddress(hwnd, "DebugHookProc");
SetWindowsHookEx(WH_DEBUG,addr, hwnd, 0);
return addr;
}
}


Die grün unteschrtichenen werden als Fehler angegeben.

Fehlermeldung: Cannot convert 'int' to 'uint'. An explicit Conversion exists!

thx im vorraus

Mo.
10.02.2010, 14:17
Ich bin nicht mehr ganz im Thema, aber gab es nicht einen unsigned int in C#?

google hilft -> http://msdn.microsoft.com/de-de/library/x0sksh43%28VS.80%29.aspx

AlterHacker
10.02.2010, 14:20
const int hwnd = LoadLibrary(path);
Try das mal:

HLIBRARY lib = LoadLibraray(path);
int addr = reinterpret_cast<int>(GetProcAddress(lib, "DebugHookProc"));

Kenn mich mit "C#" nicht besonders aus, aber so in etwa progge ich's immer in C++^^

juRiii
10.02.2010, 21:53
warum versuchst du nicht einfach

uint unsigned = Convert.ToUInt32(intValue);

Darkraiser
12.02.2010, 11:12
jo soweit hab ich das nun :) .. nun gibt mir aber die API ein Handle zurück .. (also imprinzip ein zahlwert. Was ich aber wieder in SetWindowsHookEx(WH_DEBUG,addr, hwnd, 0); was ich aber in einen System.Pointer umwandeln muss .. noch einer ne idee?