虽然我没有问题的确切答案(Flex Builder传递给mxmlc.exe的命令行参数),但我确实有一个元回答。您可以使用两种方法之一找到命令行。
第一个是平台不可知的,但会要求你编译一个小的C++程序。在解决类似问题时,我使用过这种方法。你可以做的是创建一个包装器应用程序,它只是将命令行输出到一个文件。构建此应用程序并将其作为mxmlc.exe的临时替代品放入,并且当Flex Builder执行它时,您将能够访问生成的文件“cmdline.txt”以获取所调用的完整命令行:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
ofstream cmdLine;
cmdLine.open("cmdline.txt");
for (int i = 0; i < argc; i++) {
cmdLine << argv[i];
if (i < argc)
cmdLine << " ";
}
cmdLine.close();
return 0;
}
如果你不觉得说得对,打这个卑鄙的手段上的Flex Builder,有假设你在Windows上运行的替代品。您可以使用WMI遍历所有正在运行的进程并获取其命令行信息。 Ruby是我选择的语言,这需要您安装Windows的Ruby解释器,您可以通过One-Click Ruby Installer for Windows轻松完成。
安装完成后,只想尽快运行该脚本的Flex Builder序幕你的编译:仅适用于被开始使用的过程
require 'win32ole'
wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("select * from win32_process")
for process in processes do
cmdLine = process.CommandLine
puts "Command line: #{cmdLine}" if cmdLine =~ /mxmlc/
end
我已经在正则表达式添加到打印命令行“命令行中的mxmlc“(它应该适合您的需求)。对于每一个进程遍历的更一般的解决方案,只需删除if从句在包含该行的末尾:
puts "Command line: #{cmdLine}" if cmdLine =~ /mxmlc/
这将节省您做与StartRemoteThread任何低级魔法,并通过导航的头痛PEB结构。
这是关于我能做的最好考虑你的问题的性质,没有关于你的开发操作系统的更多信息。如果这解决了您的问题,我可能会建议您编辑您的帖子,以便面临类似问题的人可以找到此解决方案。像“如何获得正在运行的进程的命令行参数”这样的标题可能更适合。