Announcement

Collapse
No announcement yet.

Try to pull a apps name

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lance Edmonds
    replied
    There is no need to LOOP to find the last \ character... many folks seem to have missed noticing the new advanced string handling functions introduced in PB/DLL 6.0 - many string functions now accept negative numbers which cause the string to be analyzed from right to left! Also, the PARSE$() function could be used just as easily in this type of code.

    Here is Semen's code rewritten for the 21 century...
    Code:
    #COMPILE EXE
    #REGISTER NONE
    #DIM ALL
    #INCLUDE "Win32Api.Inc"
     
    FUNCTION ExeName(Op AS LONG) AS STRING
      LOCAL TmpAsciiz AS ASCIIZ * %MAX_PATH
      GetModuleFileName GetModuleHandle(""), TmpAsciiz, SIZEOF(TmpAsciiz)
      IF Op = 1 THEN
         FUNCTION = TmpAsciiz
      ELSE
         LOCAL i AS LONG
         [b]i = INSTR(-1, TmpAsciiz, "\")[/b]
         IF Op = 2 THEN
             FUNCTION = LEFT$(TmpAsciiz$, i)
         ELSE
             FUNCTION = MID$(TmpAsciiz$, i + 1)
         END IF
      END IF
    END FUNCTION
     
    FUNCTION PBMAIN() AS LONG
        MSGBOX "Full path is "+ ExeName$(1) + $CRLF + _
            "Directory is "+ ExeName$(2) + $CRLF + _
            "EXE Name is "+ ExeName$(3)
    END FUNCTION


    ------------------
    Lance
    PowerBASIC Support
    mailto:[email protected][email protected]</A>

    Leave a comment:


  • Mark A Nelson
    replied
    Thank YOU !!!

    Scott were all most there!!!

    ------------------

    Leave a comment:


  • Semen Matusovski
    replied
    Mark --
    try this
    Code:
    #Compile Exe
    #Register None
    #Dim All
    #Include "Win32Api.Inc"
    
    Function ExeName(Op As Long) As String
      Local TmpAsciiz As Asciiz * 256
      GetModuleFileName GetModuleHandle(ByVal 0&), TmpAsciiz, 255
      If Op = 1 Then
         Function = TmpAsciiz
      Else
         Local i As Long, j As Long
         Do
            j = Instr(i + 1, TmpAsciiz, "\")
            If j = 0 Then Exit Do Else i = j
         Loop
         If Op = 2 Then Function = Left$(TmpAsciiz$, i) Else _ ' With final \
            Function = Mid$(TmpAsciiz$, i + 1)
      End If
    End Function
    Function PbMain() As Long
      MsgBox "Full path is "+ ExeName$(1)
      MsgBox "Directory is "+ ExeName$(2)
      MsgBox "Exe name  is "+ ExeName$(3)
    End Function
    ------------------

    Leave a comment:


  • Mark A Nelson
    started a topic Try to pull a apps name

    Try to pull a apps name

    I am trying to get the apps name when it is clicked on
    What up with this code?


    FUNCTION FINDEXE() AS STRING
    LOCAL I AS INTEGER
    LOCAL J AS INTEGER
    LOCAL TmpAsciiz AS STRING * 1024
    IResult& = Getmodulefilename(hCurInstance&,Tmpasciiz,SIZEOF(Tmpasciiz)-1)
    IF iresult& = 0 THEN EXIT FUNCTION
    I=0
    DO
    J=INSTR(i=1,tmpasciiz,"\")
    LOOP
    catalogExe$ =LEFT$(tmpasciiz,I)
    IF RIGHT$(catalogexe$,1) <>"\"THEN catalogexe$ = catalogexe$ + "\"
    FINDEXE = MID$(tmpasciiz,i+1)
    END FUNCTION
Working...
X