J'essaie de réécrire le programme suivant en C au lieu de C# (qui est moins portable). Il est évident que "int system (const char * command)" sera nécessaire pour compléter le programme. Le lancer avec "int main (int argc, char * argv [])" permettra d'obtenir les arguments de la ligne de commande, mais il reste un problème difficile à comprendre. Comment réussissez-vous à échapper des arguments avec des espaces en eux? Dans le programme ci-dessous, les arguments avec des espaces en eux (exemple: screensaver.scr "ceci est un test") seront passés au script en tant qu'arguments séparés (exemple: screensaver.scr c'est un test) et pourraient facilement causer des problèmes.Rediriger les arguments de ligne de commande pour l'amorçage
namespace Boids_Screensaver
{
static class Program
{
[STAThread]
static void Main(string[] args)
{
System.Diagnostics.Process python = new System.Diagnostics.Process();
python.EnableRaisingEvents = false;
python.StartInfo.FileName = "C:\\Python31\\pythonw.exe";
python.StartInfo.Arguments = "boids.pyw";
foreach (string arg in args)
{
python.StartInfo.Arguments += " " + arg;
}
python.Start();
}
}
}