Colocar Aplicación VFP en autostart de windows 10 ?

281 views
Skip to first unread message

Carlos Eduardo CEF

unread,
Feb 10, 2021, 12:34:15 PM2/10/21
to Comunidad de Visual Foxpro en Español
Hola a todos.
Alguno tiene algo armado para que si el Usuario quiere que el ejecutable arranque de manera automática con el arranque de windows, pueda hacerlo ?
Hay alguna llamada API con permisos administrativos o modificación directa del registro que pueda hacer una aplicación de Visual Fox pro 9?
Muchas gracias !

Zarlu

unread,
Feb 10, 2021, 12:52:22 PM2/10/21
to Comunidad de Visual Foxpro en Español
Buenas tardes cfrancher!

A lo primero:

Lo segundo no lo entendí o se refiere a lo mismo?

Suerte
zarlu
Chetumal, Quintana Roo, México

roberto martinez andrade

unread,
Feb 10, 2021, 12:54:50 PM2/10/21
to publice...@googlegroups.com
Mira yo lo hice en win 7, en la carpeta de inicio puse la ruta a la aplicación y se abre al iniciar window. En win10 no debería ser diferente.

Roberto
Coyhaque - Chile

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/41720663-56db-4d5e-bc56-e76827039952n%40googlegroups.com.

Carlos Eduardo CEF

unread,
Feb 10, 2021, 1:20:47 PM2/10/21
to publice...@googlegroups.com
Amigos,
Perdon si no fui claro, ya se como hacer "MANUALMENTE" para que cualquier programa se ejecute al iniciarse Windows, simplemente colocando un acceso directo al mismo en la correspondiente carpeta Inicio/Autostart, que ha ido cambiando y actualmente con windows 10 es esta: C:\Users\nombreusuario\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup ,
Lo que yo quiero es hacerlo mediante mi aplicación VFP, si un usuario desea que el ejecutable "arranque" junto al sistema operativo, marque una casilla de verificación y que mi aplicación haga el trabajo para que manualmente el usuario no deba arrastrar el acceso directo a la carpeta autostart de windows. Se entiende ?
Alguien tiene algún link de una solución a esto para Visual FoxPro 9?
Gracias !



Hector Kuhn

unread,
Feb 10, 2021, 1:23:48 PM2/10/21
to publicesvfoxpro
Buenas tardes, en ejecutar  shell:startup  y en la ventana de la izquierda boton derecho    Nuevo \\ acceso directo


El mié, 10 feb 2021 a las 14:54, roberto martinez andrade (<robertomart...@gmail.com>) escribió:

Carlos Eduardo CEF

unread,
Feb 10, 2021, 1:28:02 PM2/10/21
to publice...@googlegroups.com
Hola hectorhkuhn y gracias, pero REPITO:

*****
Amigos,
Perdon si no fui claro, ya se como hacer "MANUALMENTE" para que cualquier programa se ejecute al iniciarse Windows, simplemente colocando un acceso directo al mismo en la correspondiente carpeta Inicio/Autostart, que ha ido cambiando y actualmente con windows 10 es esta: C:\Users\nombreusuario\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup ,
Lo que yo quiero es hacerlo mediante mi aplicación VFP, si un usuario desea que el ejecutable "arranque" junto al sistema operativo, marque una casilla de verificación y que mi aplicación haga el trabajo para que manualmente el usuario no deba arrastrar el acceso directo a la carpeta autostart de windows. Se entiende ?
Alguien tiene algún link de una solución a esto para Visual FoxPro 9?
Gracias !

*****


Octavio Rodriguez

unread,
Feb 10, 2021, 1:35:36 PM2/10/21
to publice...@googlegroups.com

Zarlu

unread,
Feb 10, 2021, 1:40:48 PM2/10/21
to Comunidad de Visual Foxpro en Español
Qué tal cfrancher!

Y ya probaste el COPY FILE de Vfp
O los comandos del DOS: XCOPY, ROBOCOPY

O es ahí donde te pide permisos de administrador? (Se me hace que si serán necesarios)

zarlu
Chetumal, Quintana Roo, México

Carlos Eduardo CEF

unread,
Feb 10, 2021, 1:44:30 PM2/10/21
to publice...@googlegroups.com
Octavio Rodriguez,

Muchas gracias. habia leido este Post.
Si, con esto me las arreglo... Voy a tener que buscar el reemplazo de esta linea: lcCarpetaEscritorio = AddBs(loWSH.SpecialFolders("desktop")) por la correspondiente del startup...
Veremos... parece que no muchos en el mundo de Visual FoxPro han necesitado esto.
Gracias igualmente.


Jose Antonio Blasco

unread,
Feb 11, 2021, 4:59:12 AM2/11/21
to Comunidad de Visual Foxpro en Español
Carlos, mira si te sirve esta función publicada en el Blog de este grupo, y que he ampliado con 2 nuevas carpetas:


Function specialfolders
*==============================================================================
* Objetivo: Determinar la ruta a las carpetas especiales especificadas
* Autor: Doug Hennig
* Última revisión: 01/24/2007
* Parámetros: tuFolder - la carpeta a la que se quiere obtener la ruta.
* Especifica el  valor CSIDL para la carpeta deseada
* (la que podemos obtener desde:
* http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
* o emplea una de las siguientes cadenas:
* "AppData": datos específicos de la aplicación
* "CommonAppDataº": datos de la aplicación para todos los usuarios
* "Desktop": Escritorio del usuario
* "LocalAppData": datos para aplicaciones locales (que no se desplazan)
* "Personal": carpeta Mis Documentos

* "CommonStartup": carpeta de inicio de programas para todos usuarios
* "Startup": carpeta de inicio de programas para el usuario

* Devuelve: La ruta para la carpeta especificada o blanco
* si no encuentra la carpeta
* Entorno de entrada: Ninguno
* Entorno de salida: Error 11 ocurre si tuFolder no ha sido especificado correctamente
* Notas: Este código ha sido adaptado desde:
* http://msdn2.microsoft.com/en-us/library/aa140088(office.10).aspx
* Es posible agregar fácilmente soporte para otros CSIDLs
*==============================================================================

Lparameters tuFolder
Local lcPath, ;
lnFolder, ;
lcFolder, ;
lnPidl, ;
lnPidlFound, ;
lnFolderFound

* Define los valores CSIDLs para las diferentes carpetas.

#Define CSIDL_APPDATA 0x1A
* Datos específicos de la aplicación:
* XP: C:\Documents and Settings\username\Application Data
* Vista: C:\Users\username\AppData\Roaming
#Define CSIDL_COMMON_APPDATA 0x23
* Datos de la aplicación para todos los usuarios:
* XP: C:\Documents and Settings\All Users\Application Data
* Vista: C:\ProgramData
#Define CSIDL_DESKTOPDIRECTORY 0x10
* Escritorio del usuario:
* XP: C:\Documents and Settings\username\Desktop
* Vista: C:\Users\username\Desktop
#Define CSIDL_LOCAL_APPDATA 0x1C
* datos para aplicaciones locales (que no se desplazan):
* XP: C:\Documents and Settings\username\Local Settings\Application Data
* Vista: C:\Users\username\AppData\Local
#Define CSIDL_PERSONAL 0x05
* Carpeta Mis Documentos:
* XP: C:\Documents and Settings\username\My Documents
* Vista: C:\Users\username\Documents


#Define CSIDL_COMMON_STARTUP 0x18
* Carpeta Inicio del usuario:
* XP: C:\Documents and Settings\username\My Documents
* Vista: C:\Users\username\Documents


#Define CSIDL_STARTUP 0x07
* Carpeta Inicio del usuario:
* XP: C:\Documents and Settings\username\My Documents
* Vista: C:\Users\username\Documents



* Definir algunas otras constantes.
#Define ERR_ARGUMENT_INVALID 11
#Define MAX_PATH 260
#Define NOERROR 0
#Define SUCCESS 1

* Comprobar los parámetros.

Do Case

* Si es numérico, asume que es un valor CSIDL válido;
* si no, la función API devuelve una cadena vacía

Case Vartype(tuFolder) = 'N'
lnFolder = tuFolder

* Se ha pasado un tipo de dato no válido o una carpeta vacía

Case Vartype(tuFolder) <> 'C' Or Empty(tuFolder)
Error ERR_ARGUMENT_INVALID
Return ''

* Si se ha pasado una cadena, lo convierte en el valor CSIDL adecuado.

Otherwise
lcFolder = Upper(tuFolder)
Do Case
Case lcFolder = 'APPDATA'
lnFolder = CSIDL_APPDATA
Case lcFolder = 'COMMONAPPDATA'
lnFolder = CSIDL_COMMON_APPDATA
Case lcFolder = 'DESKTOP'
lnFolder = CSIDL_DESKTOPDIRECTORY
Case lcFolder = 'LOCALAPPDATA'
lnFolder = CSIDL_LOCAL_APPDATA
Case lcFolder = 'PERSONAL'
lnFolder = CSIDL_PERSONAL

Case lcFolder = 'COMMONSTARTUP'
lnFolder = CSIDL_COMMON_STARTUP

Case lcFolder = 'STARTUP'
lnFolder = CSIDL_STARTUP



Otherwise
Error ERR_ARGUMENT_INVALID
Return ''
Endcase
Endcase

* Declara las funciones API que necesitamos.

Declare Long SHGetSpecialFolderLocation In shell32 Long HWnd, Long nFolder, ;
long @ ppidl
Declare Long SHGetPathFromIDList In shell32 Long Pidl, String @ pszPath
Declare CoTaskMemFree In ole32 Long pvoid

* Inicia las variables que actualizará la función API.

lcPath = Space(MAX_PATH)
lnPidl = 0

* Obtiene la ruta para las carpetas especificadas.

lnPidlFound = SHGetSpecialFolderLocation(0, lnFolder, @lnPidl)
If lnPidlFound = NOERROR
lnFolderFound = SHGetPathFromIDList(lnPidl, @lcPath)
If lnFolderFound = SUCCESS
lcPath = Left(lcPath, At(Chr(0), lcPath) - 1)
Endif lnFolderFound = SUCCESS
Endif lnPidlFound = NOERROR
CoTaskMemFree(lnPidl)
lcPath = Alltrim(lcPath)
Return lcPath

Endfunc


Espero que te sirva.
Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2



Luis Maria Guayan

unread,
Feb 11, 2021, 10:55:28 AM2/11/21
to Comunidad de Visual Foxpro en Español
Mira si te sirve:

oWsh = CreateObject("WScript.Shell") 
cDesktopDir =  oWsh.SpecialFolders("StartUp")
?  ADDBS(cDesktopDir)

Luis María Guayán
Tucumán, Argentina
_______________________________

Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com

Zarlu

unread,
Feb 11, 2021, 3:37:16 PM2/11/21
to Comunidad de Visual Foxpro en Español
Qué tal cfrancheri!

Te dejo una rutina para crear el acceso directo en el carpeta de inicio de windows.
Algunos al instalar crean el acceso directo. Entonces sólo sería copiarlo a la carpeta de inicio.
Ha tomarse en cuenta las restricciones por los permisos de administrador, los antivirus y la conexión al servidor si tu aplicación requiere de archivos en red.
Probado con W7 y W10

zarlu
Chetumal, Quintana Roo, México
en-startup.prg

Carlos Eduardo CEF

unread,
Feb 12, 2021, 12:42:24 PM2/12/21
to publice...@googlegroups.com
Gracias a todos los "masters" que respondieron este tema !, aparte de resolver el planteo creo que es algo que les sirve a varios !!
Abrazo a Todos !

CEF


Carlos Eduardo CEF

unread,
Feb 12, 2021, 1:07:45 PM2/12/21
to publice...@googlegroups.com
zarlu
Chetumal, Quintana Roo, México

Amigo.
Lo probé. Tu código es una maravilla !!!
Lo mejor de todas. Simpleza y practicidad.

Un gran abrazo

CEF

El jue, 11 feb 2021 a las 17:37, Zarlu (<not...@prodigy.net.mx>) escribió:
Reply all
Reply to author
Forward
0 new messages