Хотя у меня нет точного ответа на ваш вопрос (какие аргументы командной строки 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 - мой любимый язык, для этого потребуется установить интерпретатор Ruby для Windows, что можно легко сделать с помощью установщика Ruby One-Click для Windows 1009 *.
.
После установки просто запустите этот скрипт, как только 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.
Это самое лучшее, что я мог сделать, учитывая природу вашего вопроса и без дополнительной информации о вашей операционной системе. Если это решит вашу проблему, я могу предложить вам отредактировать ваш пост, чтобы люди, сталкивающиеся с похожими проблемами, могли найти это решение. Заголовок типа «Как получить аргументы командной строки для запущенного процесса» может быть более подходящим.