Page 1 of 1

Cambiar icono carpeta desde codigo

PostPosted: Wed Nov 03, 2021 2:49 pm
by leandro
Buenos días para todos

Estuve buscando en el foro pero no encontré respuesta, es que deseo cambiar el icono de la carpeta de contiene nuestra aplicación, lo hice de manera manual, pero quiero saber si es posible hacerlo desde código.

Image

Re: Cambiar icono carpeta desde codigo

PostPosted: Wed Nov 03, 2021 3:37 pm
by Antonio Linares
"Change Icon of EXE file through code extracting it from other EXE file | Go4Expert" https://www.go4expert.com/articles/chan ... ting-t643/

La clave es usar UpdateResource()

Re: Cambiar icono carpeta desde codigo

PostPosted: Mon Nov 08, 2021 6:03 pm
by nageswaragunupudi
Code: Select all  Expand view
function SetFolderIcon( cFolder, cFileIco, cInfoTip )

   local lSet  := .f.
   local oIni, cIni, cSec := ".ShellClassInfo"

   cFolder  := RemRight( cFolder, "\" )
   DEFAULT cInfoTip := "
"

   if File( cFileIco ) .and. Lower( cFileExt( cFileIco ) ) == "
ico" .and. ;
      !File( cFolder )

      if !lIsDir( cFolder )
         lMkFullPath( cFolder )
      endif

      if lIsDir( cFolder )
         SetFAttr( cFolder, 4 )
         cFileIco := cRelativePath( cFileIco, cFolder )
         cIni     := cFolder + "
\desktop.ini"
         INI oIni FILE cIni
         SET SECTION cSec ENTRY "
ConfirmFileOp" TO 0        OF oIni
         SET SECTION cSec ENTRY "
NoSharing"     TO 1        OF oIni
         SET SECTION cSec ENTRY "
IconFile"      TO cFileIco OF oIni
         SET SECTION cSec ENTRY "
IconIndex"     TO 0        OF oIni
         SET SECTION cSec ENTRY "
InfoTip"       TO cInfoTip OF oIni
         SetFAttr( cIni, 2 )
         lSet  := .t.
      endif
   endif

return lSet


This function is included in the next version of FWH

Test:
Code: Select all  Expand view
? SetFolderIcon( "c:\fwh\icofolder", "c:\fwh\icons\fivetech.ico", "FWH SetFolderIcon() function" )


Image

Re: Cambiar icono carpeta desde codigo

PostPosted: Tue Nov 09, 2021 9:17 pm
by leandro
Excelente Mr.Nages :D

Era lo que estaba buscando. Muchas gracias.

Re: Cambiar icono carpeta desde codigo

PostPosted: Mon Nov 15, 2021 8:23 pm
by acuellar
Buenas estimados

Y la función cRelativePath donde la encuentro?

Re: Cambiar icono carpeta desde codigo

PostPosted: Mon Nov 15, 2021 10:42 pm
by karinha
acuellar wrote:Buenas estimados

Y la función cRelativePath donde la encuentro?


Borland shell32.lib


regards, saludos

Re: Cambiar icono carpeta desde codigo

PostPosted: Tue Nov 16, 2021 8:35 pm
by acuellar
Gracias estimado Joao

Pero no está en en la Lib Shell32 :(

Re: Cambiar icono carpeta desde codigo

PostPosted: Tue Nov 16, 2021 10:16 pm
by karinha

Re: Cambiar icono carpeta desde codigo

PostPosted: Tue Nov 16, 2021 10:37 pm
by karinha
Code: Select all  Expand view

// \samples\CRELATIV.PRG

#Include "FiveWin.ch"

FUNCTION Main()

   ? SetFolderIcon( "c:\FWH1905\icofolder", "c:\FWH1905\icons\fivetech.ico", ;
      "FWH SetFolderIcon() function" )

RETURN NIL

FUNCTION SetFolderIcon( cFolder, cFileIco, cInfoTip )

   local lSet  := .f.
   local oIni, cIni, cSec := ".ShellClassInfo"

   cFolder  := RemRight( cFolder, "\" )

   DEFAULT cInfoTip := "
"

   IF FILE( cFileIco ) .AND. Lower( cFileExt( cFileIco ) ) == "
ico" .AND. ;
      .NOT. FILE( cFolder )

      IF .NOT. lIsDir( cFolder )

         lMkFullPath( cFolder )

      ENDIF

      IF lIsDir( cFolder )

         SetFAttr( cFolder, 4 )

         cFileIco := cRelativePath( cFileIco, cFolder )
         cIni     := cFolder + "
\desktop.ini"

         INI oIni FILE cIni
         SET SECTION cSec ENTRY "
ConfirmFileOp" TO 0        OF oIni
         SET SECTION cSec ENTRY "
NoSharing"     TO 1        OF oIni
         SET SECTION cSec ENTRY "
IconFile"      TO cFileIco OF oIni
         SET SECTION cSec ENTRY "
IconIndex"     TO 0        OF oIni
         SET SECTION cSec ENTRY "
InfoTip"       TO cInfoTip OF oIni

         SetFAttr( cIni, 2 )

         lSet  := .t.

      ENDIF

   ENDIF

   ? cIni // ??

RETURN( lSet )

// FIN / END


Regards, saludos.

Re: Cambiar icono carpeta desde codigo

PostPosted: Tue Nov 16, 2021 10:39 pm
by acuellar
Gracias Estimado

Tengo FWH 18.04 :(

Re: Cambiar icono carpeta desde codigo

PostPosted: Wed Nov 17, 2021 2:24 pm
by nageswaragunupudi
acuellar wrote:Buenas estimados

Y la función cRelativePath donde la encuentro?

You need to upgrade FWH

Re: Cambiar icono carpeta desde codigo

PostPosted: Wed Nov 17, 2021 2:24 pm
by nageswaragunupudi
acuellar wrote:Buenas estimados

Y la función cRelativePath donde la encuentro?

You need to upgrade FWH

Re: Cambiar icono carpeta desde codigo

PostPosted: Wed Nov 17, 2021 7:01 pm
by acuellar
Thanks Mr. Rao