Voici une aide MSDOS pour les nostalgiques du système de base
Je l’ai réalisé en punch avec l’utilisation d’un fichier *.bat ou *.cmd au choix.
Code : Tout sélectionner
;*****************************************************************************
;*
;* PurePunch Contest #3
;*
;* Name : "Help MSDOS " Aide Msdos avec file *.BAT et listicongadget
;* Author : PAPIPP
;* Category : UTIL
;* Date : 15 / 07 / 09
;*
;*****************************************************************************
#W0=0:#L0=0:#L1=1:Procedure afch(gdgt,f_t$,hlp$="HELP"):asci$ = Space(99):ansi$=Space(99):OF.l=OpenFile(#PB_Any,f_t$):If of<>0
:asci$=ReadString(OF)+Chr(10):OemToChar_(@asci$,@ansi$):AddGadgetItem(gdgt,-1, hlp$+" :"+ansi$):eof1=Eof(OF):While Eof(of)=0
:asci$ =ReadString(OF)+Chr(10):OemToChar_(@asci$,@ansi$):AddGadgetItem(gdgt,-1,ansi$):Wend:EndIf:CloseFile (OF):EndProcedure
Procedure OW0():If OpenWindow(#W0, 0, 0, 800, 600, "HELP MSDOS",13107200|12845056|13238272|12582912):ListIconGadget(#L0, 0, 0, 800, 300, "CMD Dos Double cliquez sur une CMD", 800, 8|65536|1073741824)
:ListIconGadget(#L1, 0, 300, 800, 300, "Help CMD", 800, 8|65536|1073741824): GadgetToolTip(#L0, "Double Cliquez sur une des ligne pour une aide")
:EndIf::EndProcedure::U$="c:\":s$=".BAT":ft$=Space(255):mask$="%YY"+Str(DayOfYear(Date()))+"%ii%ss":fp$="PB"+FormatDate(mask$,Date())
:fb$=u$+fp$+s$:FB.l=CreateFile(#PB_Any,fb$):GetTempFileName_(@U$,@fp$,000,@ft$):WriteStringN(FB, "@ECHO OFF"):WriteStringN(FB, "help %1>"+ft$)
:WriteString(FB,"Exit /B 233"):CloseFile(FB):OW0():F1=LoadFont(#PB_Any,"Courier New",8,256):SetGadgetFont(#L0, FontID(F1)):SetGadgetFont(#L1, FontID(F1))
:prg=RunProgram(fb$,"",".",1):afch(#L0,ft$):Repeat: WWE = WaitWindowEvent(): Select WWE: Case #PB_Event_Gadget: EG = EventGadget():ET = EventType()
:If EG = #L0:If ET=2:ELEM.l = GetGadgetState(#L0):ELEM$= GetGadgetItemText(#L0, Elem):Pos= FindString(elem$, " ", 1):CMD$=Mid(elem$,1,pos-1)
:prg=RunProgram(fb$,cmd$,".",1):ClearGadgetItems(#L1):afch(#L1,ft$,CMD$):DeleteFile(ft$):EndIf:EndIf:Case 16:EventWindow = EventWindow()
:If EventWindow = #W0:CloseWindow(#W0): DeleteFile(FB$):DeleteFile(FT$):Break: EndIf:EndSelect:ForEver
Code : Tout sélectionner
;*****************************************************************************
;*
;* PurePunch Contest #3
;*
;* Name : "Help MSDOS " Aide Msdos avec file *.CMD et listviewgadget
;* Author : PAPIPP
;* Category : UTIL
;* Date : 15 / 07 / 09
;*
;*****************************************************************************
#W0=0:#L0=0: #L1=1:Procedure afch(gdgt,f_t$,hlp$="HELP"):asci$ = Space(99):ansi$=Space(99):OF.l=OpenFile(#PB_Any,f_t$):If of<>0:asci$=ReadString(OF)
:OemToChar_(@asci$,@ansi$): AddGadgetItem(gdgt,-1, hlp$+" :"+ansi$):eof1=Eof(OF):While Eof(of)=0:asci$ =ReadString(OF):OemToChar_(@asci$,@ansi$)
:AddGadgetItem(gdgt,-1,ansi$):Wend:EndIf:CloseFile (OF):EndProcedure:Procedure OW0():If OpenWindow(#W0, 0, 0, 800, 600, "HELP MSDOS Double cliquez une ligne pour aide",13107200|12845056|13238272|12582912)
:ListViewGadget(#L0, 0, 0, 800, 300):ListViewGadget(#L1, 0, 300, 800, 300):GadgetToolTip(#L0, "Double Cliquez sur une des ligne pour une aide")
EndIf:EndProcedure:U$="c:\":s$=".CMD":ft$=Space(255):mask$="%YY"+Str(DayOfYear(Date()))+"%ii%ss":fp$="PB"+FormatDate(mask$,Date()):fb$=u$+fp$+s$
FB.l=CreateFile(#PB_Any,fb$):GetTempFileName_(@U$,@fp$,000,@ft$):WriteStringN(FB, "@ECHO OFF"):WriteStringN(FB, "help %1>"+ft$):WriteString(FB,"Exit /B 233")
:CloseFile(FB):OW0():F1=LoadFont(#PB_Any,"Courier New",8,256):SetGadgetFont(#L0, FontID(F1)):SetGadgetFont(#L1, FontID(F1)):prg=RunProgram(fb$,"",".",1)
:afch(#L0,ft$):Repeat:WWE = WaitWindowEvent():Select WWE:Case #PB_Event_Gadget:EG = EventGadget():ET = EventType():If EG = #L0:If ET=2
ELEM.l = GetGadgetState(#L0):ELEM$= GetGadgetItemText(#L0, Elem):Pos= FindString(elem$, " ", 1):CMD$=Mid(elem$,1,pos-1):prg=RunProgram(fb$,cmd$,".",1)
:ClearGadgetItems(#L1):afch(#L1,ft$,CMD$): DeleteFile(ft$):EndIf:EndIf:Case 16: EW = EventWindow():If EW = #W0:CloseWindow(#W0)
: DeleteFile(FB$):DeleteFile(FT$):Break:EndIf:EndSelect:ForEver
Les prg punch ci-dessus utilise un fichier *.bat ou*.cmd mais celui-ci-dessous n’utilise pas cette technique.
Ce prg fonctionne anormalement ainsi les commandes suivantes sont sans résultat :
********aucune aide pour les cmd suivantes dans ce prg alors qu’avec le prg punch c’est bon
CHCP
CHKDSK
COMP
CONVERT
FC
REPLACE
XCOPY
*********** Pour les cmd suivantes c’est beaucoup plus grave car une fenêtre d’erreur apparaît.
CHKNTFS
DOSKEY
FIND
Code : Tout sélectionner
;;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
#ListIcon_0
#ListIcon_1
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 404, 120, 800, 600, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
ListIconGadget(#ListIcon_0, 0, 0, 400, 600, "CMD Dos", 400, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
ListIconGadget(#ListIcon_1, 400, 0, 400, 600, "Help CMD", 400, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
EndIf
EndProcedure
OpenWindow_Window_0()
prg=RunProgram("cmd", " /A /C help",".",#PB_Program_Open|#PB_Program_Read)
Font1 = LoadFont(#PB_Any, "Courier New" , 8, #PB_Font_Bold )
SetGadgetFont(#ListIcon_0, FontID(Font1))
SetGadgetFont(#ListIcon_1, FontID(Font1))
s_ascii$ = Space(64000)
s_ansi$=Space(64000)
Debug formn(@s_ascii$)
If prg
s_ascii$=ReadProgramString(prg)
OemToChar_(@s_ascii$,@s_ansi$)
Resultat = AddGadgetItem(#ListIcon_0,-1, s_ansi$)
While ProgramRunning(prg)
s_ascii$ =ReadProgramString(prg)
OemToChar_(@s_ascii$,@s_ansi$)
Resultat = AddGadgetItem(#ListIcon_0,-1, s_ansi$)
Wend
EndIf
; CloseProgram(prg)
; KillProgram(prg)
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #ListIcon_0
If eventtype=#PB_EventType_LeftDoubleClick
ELEM.l = GetGadgetState(#ListIcon_0)
ELEM$= GetGadgetItemText(#ListIcon_0, Elem)
Pos= FindString(elem$, " ", 1)
CMD$=Mid(elem$,1,pos-1)
; Debug forms(CMD$)+formn(Len(cmd$))
prg=RunProgram("cmd", " /A /C "+Chr(34)+"help "+CMD$+Chr(34),".",#PB_Program_Open|#PB_Program_Read)
ClearGadgetItems(#ListIcon_1)
; Debug formn(@s_ascii$)
If prg
s_ascii$=ReadProgramString(prg)
OemToChar_(@s_ascii$,@s_ansi$)
Resultat = AddGadgetItem(#ListIcon_1,0, CMD$+" : "+s_ansi$)
While ProgramRunning(prg)
s_ascii$ =ReadProgramString(prg)
OemToChar_(@s_ascii$,@s_ansi$)
Resultat = AddGadgetItem(#ListIcon_1,-1, s_ansi$)
Wend
EndIf
EndIf
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
CloseProgram(prg)
Break
EndIf
EndSelect
ForEver