雖然我沒有問題的確切答案(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結構。
這是關於我能做的最好考慮你的問題的性質,沒有關於你的開發操作系統的更多信息。如果這解決了您的問題,我可能會建議您編輯您的帖子,以便面臨類似問題的人可以找到此解決方案。像「如何獲得正在運行的進程的命令行參數」這樣的標題可能更適合。