也许您可以在ShellExecute周围包装一个简单的C程序,并传递动词OPEN。
ShellExecute(NULL, TEXT("open"), TEXT("rundll32.exe"), TEXT("url.dll,FileProtocolHandler pathToGadget"), NULL, SW_SHOWNORMAL);
我在这里找到了这个例子。
编辑:
由于您是在Java中进行此 *** 作-
您可以尝试像这样对ShellExceute函数进行JNI包装(来自我在The
Wannabe Java
Rockstar上发现并被屠杀的示例)
public static boolean execute(String file, String parameters) { Function shellExecute = Shell32.getInstance().getFunction(SHELL_EXECUTE.toString()); Int32 ret = new Int32(); shellExecute.invoke(ret, // return value new Parameter[] { new Handle(), // hWnd new Str("open"), // lpOperation new Str(file), // lpFile new Str(parameters), // lpParameters new Str(), // lpDirectory new Int32(1) // nShowCmd }); if(ret.getValue() <= 32) { System.err.println("could not execute ShellExecute: " + file + ". Return: " + ret.getValue()); } return (ret.getValue() > 32); } public static void main(String[] args) { ShellExecute.execute("rundll32.exe","url.dll,FileProtocolHandler pathToGadget" ); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)