No sé si aún te sirva, pero es bastante obvio que algo sí que es diferente en ambos casos, y es un error muy común cuando uno tiene poca experiencia. Siempre que uses cuadros de diálogo para abrir o guardar archivos, ten presente que te pueden cambiar el directorio actual (working directory).
Puedes ver que eso está ocurriendo en tu programa. Fíjate en tu video, en las ventanas de consola, desde dónde se están ejecutando los comandos del bat. Seguro alguno de esos comandos depende de la ruta, y por eso el error.
Hola. No creo, sigo pensando que es brujeria china. Desde el dia que dejé esto es por que me llené de odio luego de reever el codigo de las formas que sean, y no le encontré la vuelta. Hoy luego de?? 1 mes? decidí retomarlo, para intentar nuevamente y sigo sin encontrar respuesta. Me enfermé a tal punto que iba a directamente a rehacer el proyecto, pero me calmé y pensé un poco:
Situacion: No hay forma, sólo anda de esa forma. ¿Que hago? busco la solucion? ya no, la busque demasiadoy no la encontré. Entonces buscaré la solución más elegante.
Lo solucioné, creando un acceso directo.
Seré extenso pero repetiré el problema.
Tu primera cita
No sé si aún te sirva, pero es bastante obvio que algo sí que es diferente en ambos casos, y es un error muy común cuando uno tiene poca experiencia. Siempre que uses cuadros de diálogo para abrir o guardar archivos, ten presente que te pueden cambiar el directorio actual (working directory).
Puedes ver que eso está ocurriendo en tu programa. Fíjate en tu video, en las ventanas de consola, desde dónde se están ejecutando los comandos del bat. Seguro alguno de esos comandos depende de la ruta, y por eso el error.
tendría argumento lógico y real si fallara luego de cargar una preset con cualquier tipo de archivo. O sea si yo guardo una preset, salgo de programa, lo inicio de nuevo, cargo una preset, le doy Play y falla con todos los archivos, claramente es lo que dices: un error en el directorio actual.
Pero no es el caso, ya que cualquier archivo que exista (excepto los bat) Funciona bien. Inicio el programa > Cargo la preset, le doy play al programa, y el programa o archivo se ejcuta sin problema y sigue la función de mi original de mi programa.
Pero no, sólo falla con los BAT (y no sé si todos, al menos los que uso).
Resumen del problema:
Si inicio el programa, seleccciono el bat, le doy play.. andaSi inicio el programa, selecciono cualquier programa u archivo, le doy play... anda
Si Inicio el programa, guardo una preset del bat, Lo cierro, cargo la preset y le doy play, NO ANDA. Es decir, abre el CMD rápido y se cierra.Si inicio el programa, guardo una preset con cualquier archivo, y le doy play, Anda...
Lo que hace mi programa cuando selecciona el archivo, es simplemente abrir el commonDialog, el FileName (ruta completa con archivo y extensión incluidos) queda guardado en la caja de text "txtpath" luego el boton preset guarda eso en una base de datos. Cuando se carga la preset desde otro boton, se trae la info desde la base de datos al casillero de origen. Fin, eso es el 50% del programa.
Al levantar es recordset. el botón de "iniciar" manda el ShellExecute al TXTpath, y obviamente anda, con todo y todas las preset, menos el jodido bat... (sólo si es cargado desde un preset preset, pero cualquier otro archivo si anda cargando preset :/).
Brujería del Tío Bill.. para mi algun error interno desconcido entre el CMD y las API de ShellExecute, Shell, o el WinExec. Con ninguna de las 3 andubo,
tal vez al final del recordset en el levante de los datos a la base de datos al sistema tenga algo... O tal vez en el option explicit para abajo.. En fin, para mi absolutamente todo queda descartado por que anda con todo lo que existe en entorno windows, con o sin carga de presets, menos con los bat luego de ser levantados desde la base de datos.
En fin, cual es la solución? La única y comentada al principio del post, volver a seleccionar el archivo Bat, o el acceso directo a dicho bat, desde el boton que abre el common dialog. Solamente hacer eso, y darle play, ya anda, sino se cierra al toque la ventana del CMD
Cual es la solcucion elegante? Simplemente cuando guardo la preset, en secreto sin decirle al usuario
le borro la carpeta system32 y todas sus fotos guardo en el path del programa un acceso directo a esa ***** que haya seleccionado al principio.
Cuando inicia el programa, pregunta si es un bat, si pone que no, ejecuta normalmente algo que no sea bat y obviamente anda. Si pone que si, abre de nuevo el commonDialog en la carpeta interna del programa, y hace doble click en el acceso directo, ya con eso sigue la funcion correcta de todo el sistema y anda perfectamente. Digamos unos 4 clicks de más.
No se me ocurrió otra cosa, probé demasiadas cosas y jamás quiso andar.
No has puesto el codigo del Start TODO.bat no podemos saber si es un error en el Script.
No sabemos que Informacion se guarda/carga el archivo de Precencia (k.aaa)
Incluso Podria ser el PhoenixMiner.exe que no se cierra a la Primera vez, tendrias q revisar. y si ese fuera el caso debes Matar el Proceso cuando terminas el minado.
Ni lei eso que me pedias el codigo del bat... a ver si era eso.
Por cierto si, es la función principal del programa y por eso se pide aparte (escrito manualmente x el user) el nombre del .exe. Cierra el .exe en un momento.
El bat tiene esto
setx GPU_FORCE_64BIT_PTR 0
setx GPU_MAX_HEAP_SIZE 100
setx GPU_USE_SYNC_OBJECTS 1
setx GPU_MAX_ALLOC_PERCENT 100
setx GPU_SINGLE_ALLOC_PERCENT 100
EthDcrMiner64.exe -epool us2.ethermine.org:4444 -ewal 0x8cce0e45e0fe85f3f70380825c23975b2235.MineraHanlRX570 -epsw x -mport 0 -showdiff 1 -showpower 1 -dbg -1 -rxboost 0