Thành viên | Nội dung |
radiogaga
Ta đây thủy tinh, có tài gọi mưa hô gió ...
Sơn Tinh ta đây : có tài là đốn gốc cây, đánh hốc cây ... 44 bài
| Mới tìm được cái này hay hay, copy cho anh em xem. Đó là late binding, tức là gọi function sau.
MethodInfo mi; object result = null; object [] args = new object [] {"ABC123"}; try { Assembly assemblyInstance = Assembly.LoadFrom(@"c:\AssemblyDir\SomeControls.dll"); Type [] types = assemblyInstance.GetTypes(); foreach (Type t in types) { mi = t.GetMethod("GetUserName"); if (mi != null) { string typeName = t.FullName; object lateBoundObj = Asm.CreateInstance(typeName); result = t.InvokeMember (MethodName, BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance, null, lateBoundObj, args); break; } } string userName = result.ToString(); MessageBox("User Name is: {0}", userName) } catch(Exception ex) { MessageBox.Show(ex.Message) }
|
radiogaga
Ta đây thủy tinh, có tài gọi mưa hô gió ...
Sơn Tinh ta đây : có tài là đốn gốc cây, đánh hốc cây ... 44 bài
| Còn một cái nữa cũng khá hay
class Class1{ [DllImport("kernel32")] public extern static int LoadLibrary(string lpLibFileName); [DllImport("kernel32")] public extern static bool FreeLibrary(int hLibModule); [DllImport("kernel32", CharSet=CharSet.Ansi)] public extern static int GetProcAddress(int hModule, string lpProcName); /* [DllImport("msjava", CharSet=CharSet.Unicode)] public extern static int call(int funcptr, int hwnd, string message, string title, int flags); */ [DllImport("Invoke", CharSet=CharSet.Unicode)] public extern static int InvokeFunc(int funcptr, int hwnd, string message, string title, int flags);
static void Main(string [] args) { int hmod=LoadLibrary("User32"); int funcaddr=GetProcAddress(hmod, "MessageBoxW"); int result=InvokeFunc(funcaddr, 0, "Hello World", ".Net dynamic export invocation", 1 /*MB_OKCANCEL*/); Console.WriteLine("Result of invocation is " + result);
FreeLibrary(hmod);
Console.WriteLine("Press any key to continue..."); Console.ReadLine(); } }
|
|