Double ouverture de la console lors de l'appel d'un .BAT
Bonjour,
Je souhaite utiliser un soft C++ pour ouvrir un .bat , jusque la pas de soucis.
Lors de l'appui sur un bouton, je lance un backgroundworker dans lequel j'utilise un process start info pour appeler mon fichier bat.
Le problème, c'est que quand j'appuie sur mon bouton, 2 fenêtres de la console s'ouvrent, comme si mon thread arrière plan appelait deux fois mon fichier bat...
A noter que si je lance directement le process start info depuis mon bouton, il s'ouvre normalement..
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Threading;
/// <summary>
/// Description résumée de Form1
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
private:
System::Windows::Forms::Button^ button1;
System::ComponentModel::BackgroundWorker^ backgroundWorkerMACADRESS;
System::Windows::Forms::RichTextBox^ richTextBox1;
System::Diagnostics::Process^ process;
System::Diagnostics::ProcessStartInfo^ pInfo;
public:
Form1(void)
{
InitializeComponent();
InitializeBackgoundWorker();
//
//TODO: ajoutez ici le code du constructeur
//
}
private:
// Set up the BackgroundWorker object by attaching event handlers
void InitializeBackgoundWorker()
{
backgroundWorkerMACADRESS->DoWork += gcnew DoWorkEventHandler( this, &Form1::backgroundWorkerMACADRESS_DoWork );
backgroundWorkerMACADRESS->RunWorkerCompleted += gcnew RunWorkerCompletedEventHandler( this, &Form1::backgroundWorkerMACADRESS_RunWorkerCompleted );
backgroundWorkerMACADRESS->ProgressChanged += gcnew ProgressChangedEventHandler( this, &Form1::backgroundWorkerMACADRESS_ProgressChanged );
}
protected:
/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
protected:
private:
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->backgroundWorkerMACADRESS = (gcnew System::ComponentModel::BackgroundWorker());
this->richTextBox1 = (gcnew System::Windows::Forms::RichTextBox());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(50, 59);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(184, 46);
this->button1->TabIndex = 0;
this->button1->Text = L"Download MAC Adress";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// backgroundWorkerMACADRESS
//
this->backgroundWorkerMACADRESS->WorkerReportsProgress = true;
this->backgroundWorkerMACADRESS->WorkerSupportsCancellation = true;
this->backgroundWorkerMACADRESS->DoWork += gcnew System::ComponentModel::DoWorkEventHandler(this, &Form1::backgroundWorkerMACADRESS_DoWork);
//
// richTextBox1
//
this->richTextBox1->Location = System::Drawing::Point(317, 50);
this->richTextBox1->Name = L"richTextBox1";
this->richTextBox1->Size = System::Drawing::Size(307, 276);
this->richTextBox1->TabIndex = 1;
this->richTextBox1->Text = L"";
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(646, 350);
this->Controls->Add(this->richTextBox1);
this->Controls->Add(this->button1);
this->Name = L"Form1";
this->Text = L"MainWindow";
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//Appel au backgroundworker pour le téléchargement de l'adresse mac
// Start the asynchronous operation.
backgroundWorkerMACADRESS->RunWorkerAsync();
richTextBox1->Text= "Lancement Batch";
}
private: System::Void backgroundWorkerMACADRESS_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e)
{
//Lancement du fichier .bat pour le téléchargement adresse mac
pInfo = gcnew System::Diagnostics::ProcessStartInfo;
pInfo->Verb = "open";//Action effectuée par le PSI
pInfo->FileName = "C:\\SondeDosto\\BatchFiles\\TestBatch.bat"; // Fichier a lancer
pInfo->UseShellExecute = true;
process = System::Diagnostics::Process::Start( pInfo );
} |
Auriez vous des idées pour remédier à cela ?