Barra laterale

programmazione:msys2:avviare_applicazioni

Avviare applicazioni msys2 da Windows

Autore: Fabio Di Matteo
Ultima revisione: 26/11/2018 - 10:59

Creare un collegamento o uno script con il seguente comando:

msys2_shell.cmd -mingw64 -c  /c/mia_cartella/mioprogramma.exe

-mingw64 indica che vogliamo l'ambiente di sviluppo a 64 bit;

Non visualizzare la finestra nera del terminale

Per far in modo da non visualizzare la finestra del terminale mi sono servito di un collegamento Windows che lancia un apposito script python che lancia a sua volta finalmente l'eseguibile.

Il testo da inserire nel collegamento

C:\msys64\usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW64 /bin/bash -lc /home/Admin/mioprog.exe



Script grafici con altri interpreti

Python

C:\msys64\usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW64  /mingw64/bin/python3 /c/path/to/miotest.py

oppure creare un eseguibile con questo codice:

#include <stdio.h>
#include <string.h>
#include <windows.h>
 
#include <libgen.h>
 
int main(int argc, char** argv)
{
	char cmd[200];
	char* msys2= "\\usr\\bin\\mintty.exe -w hide /bin/env MSYSTEM=MINGW64  /mingw64/bin/python3 " ;
	sprintf ( cmd, "%s%s%s", dirname(argv[0]),msys2,argv[1] );
 
	STARTUPINFO info={sizeof(info)};
	PROCESS_INFORMATION processInfo;
	if (CreateProcess(NULL, cmd, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &info, &processInfo))
	{
		CloseHandle(processInfo.hProcess);
		CloseHandle(processInfo.hThread);
	}else {
		MessageBox( NULL, "Creazione del processo fallita!", "Attenzione", MB_OK | MB_ICONERROR| MB_TASKMODAL);
	}
 
	return 0;
}

makefile

all:
	gcc run.c  -mwindows -o runmsys2

Creare un lanciatore per le nostre applicazioni

C

run.c

#include <stdio.h>
#include <string.h>
#include <windows.h>
 
int main(int argc, char** argv)
{
	char cmd[200];
	char* msys2= "C:\\msys64\\usr\\bin\\mintty.exe -w hide /bin/env MSYSTEM=MINGW64 /bin/bash -lc " ;
	sprintf ( cmd, "%s%s", msys2,argv[1] );
 
 
	STARTUPINFO info={sizeof(info)};
	PROCESS_INFORMATION processInfo;
	if (CreateProcess(NULL, cmd, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &info, &processInfo))
	{
		CloseHandle(processInfo.hProcess);
		CloseHandle(processInfo.hThread);
	}else {
		MessageBox( NULL, "Creazione del processo fallita!", "Attenzione", MB_OK | MB_ICONERROR| MB_TASKMODAL);
	}
 
	return 0;
}

makefile

all:
	gcc run.c  -mwindows -o runmsys2

Se si vuole creare un avviatore per script grafici basta sostituire il contenuto della variabile char* msys2 con la stringa adatta a caricare l'interprete per script grafici (vedi su).

File .bat

@echo off
start /B C:\msys64\usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW64 /bin/bash -lc /c/Users/Admin/Desktop/test/myscript.py

File .vbs

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "C:\msys64\usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW64 /bin/bash -lc /c/Users/Admin/Desktop/test/myscript.py"
oShell.Run strArgs, 0, false

programmazione/msys2/avviare_applicazioni.txt · Ultima modifica: 04/12/2018 - 10:45 da Fabio Di Matteo