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