Beim PC start das programm starten

Anfängerfragen zum Programmieren mit PureBasic.
parzival
Beiträge: 5
Registriert: 26.03.2010 21:25

Beim PC start das programm starten

Beitrag von parzival »

hi leute,
ich würde gerne ein programm schreiben, dass wenn ich meinen pc starte, gleich automatisch angeht, und auch unten in der taskleiste bleibt.
wenn man irgentein programm startet oder es läuft, ist ja unten in der leiste ein icon davon , dort soll mein programm NICHT angezeigt werden, sondern nur ganz rechts wo auch die uhrzeit,datum, antivir, lautstärke usw. soll es angezeigt werden, versteht ihr??
gibts für meine 2 probleme einen befehl, muss ich ne dll einbinden oder brauch ich die winapi??
mfg
parzival
p.s.: das programm wofür ich das brauch soll ein programm werden, welches mir anzeigt welche hausaufgaben ich noch machen muss :D
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Beim PC start das programm starten

Beitrag von man-in-black »

1) für den autostart, kannst du das Programm oder eine Verknüpfung in den Windows Autostart Ordner packen (sofern du Windows hast)
2) das rechts unten heißt systray und sollte unter dem namen in der hilfe zu finden sein
3) nein, du brauchst keine weiteren dlls :allright:
(hab alles, kann alles, weiß alles!!^^)

Bild
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Beim PC start das programm starten

Beitrag von al90 »

Für den fall das du es nicht Händig kopieren möchtest.
Zum ermitteln des AutostartFolders kannst du das hier benutzen:

Code: Alles auswählen

Procedure.s Spec_Folder(clsi_const.l)
   Path.s = Space(2048)
   SHGetSpecialFolderLocation_(0,clsi_const,@pidl.l)
   SHGetPathFromIDList_(pidl,@Path)
   CoTaskMemFree_(pidl)
   ProcedureReturn Path+"\"
EndProcedure

Debug Spec_Folder(7)
Und um eine Verknüpfung zu erstellen das hier:

Code: Alles auswählen

Procedure.l CreateShellLink(Path$, Link$, Argument$, DESCRIPTION$, WorkingDirectory$, ShowCommand.l, HotKey.l, IconFile$, IconIndexInFile.l)
   CoInitialize_(0) 
   If CoCreateInstance_(?CLSID_ShellLink,0,1,?IID_IShellLink,@psl.IShellLinkA) = 0 
      
   Set_ShellLink_preferences: 
      
      ; The file TO which is linked ( = target for the Link ) 
      ; 
      psl\SetPath(@Path$) 
      
      ; Arguments for the Target 
      ; 
      psl\SetArguments(@Argument$) 
      
      ; Working Directory 
      ; 
      psl\SetWorkingDirectory(@WorkingDirectory$) 
      
      ; Description ( also used as Tooltip for the Link ) 
      ; 
      psl\SetDescription(@DESCRIPTION$) 
      
      ; Show command: 
      ;               SW_SHOWNORMAL    = Default 
      ;               SW_SHOWMAXIMIZED = aehmm... Maximized 
      ;               SW_SHOWMINIMIZED = play Unreal Tournament 
      psl\SetShowCmd(ShowCommand) 
      
      ; Hotkey: 
      ; The virtual key code is in the low-order byte, 
      ; and the modifier flags are in the high-order byte. 
      ; The modifier flags can be a combination of the following values: 
      ; 
      ;         HOTKEYF_ALT     = ALT key 
      ;         HOTKEYF_CONTROL = CTRL key 
      ;         HOTKEYF_EXT     = Extended key 
      ;         HOTKEYF_SHIFT   = SHIFT key 
      ; 
      psl\SetHotkey(HotKey) 
      
      ; Set Icon for the Link: 
      ; There can be more than 1 icons in an icon resource file, 
      ; so you have to specify the index. 
      ; 
      psl\SetIconLocation(@IconFile$, IconIndexInFile) 
      
      
   ShellLink_SAVE: 
      ; Query IShellLink For the IPersistFile interface For saving the 
      ; shortcut in persistent storage. 
      If psl\QueryInterface(?IID_IPersistFile,@ppf.IPersistFile) = 0 
        ; Ensure that the string is Unicode. 
        mem.s = Space(1000) ;AllocateMemory(1,1000) 
        MultiByteToWideChar_(#CP_ACP, 0, Link$, -1, mem, 1000) 
        ;Save the link by calling IPersistFile::Save. 
        hres = ppf\Save(@mem,#True) 
        result = 1 
        ppf\Release() 
      EndIf 
      psl\Release() 
   EndIf 
   CoUninitialize_() 
   ProcedureReturn result 
    
   DataSection 
     CLSID_ShellLink: 
       ; 00021401-0000-0000-C000-000000000046 
       Data.l $00021401 
       Data.w $0000,$0000 
       Data.b $C0,$00,$00,$00,$00,$00,$00,$46 
     IID_IShellLink: 
       ; DEFINE_SHLGUID(IID_IShellLinkA,         0x000214EEL, 0, 0); 
       ; C000-000000000046 
       Data.l $000214EE 
       Data.w $0000,$0000 
       Data.b $C0,$00,$00,$00,$00,$00,$00,$46 
     IID_IPersistFile: 
       ; 0000010b-0000-0000-C000-000000000046 
       Data.l $0000010B 
       Data.w $0000,$0000 
       Data.b $C0,$00,$00,$00,$00,$00,$00,$46 
   EndDataSection 

EndProcedure 
Systray-Beispiele müsste es auch auf PureArea.net geben soviel ich weis.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Beim PC start das programm starten

Beitrag von CSHW89 »

Hab grad auch noch ein Beispiel zusammen geschustert. Hab nämlich ein Systray-Beispiel auf die schnelle nicht gefunden:

Code: Alles auswählen

#WindowId = 0
#SystrayId = 0

If OpenWindow(#WindowId, 0, 0, 200, 100, "Test", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
  ; Hier musst du dein Icon laden
  image = ;LoadImage(0, "")
  
  ; Versteckt das Fenster
  HideWindow(#WindowId, 1)
  AddSysTrayIcon(#SystrayId, WindowID(#WindowId), image)
  
  Repeat
    event = WaitWindowEvent()
    
    If (event = #PB_Event_MinimizeWindow)
      If (EventWindow() = #WindowId)
        ; Versteckt das Fenster wieder
        HideWindow(#WindowId, 1)
        AddSysTrayIcon(#SystrayId, WindowID(#WindowId), image)
      EndIf
    EndIf
    
    If (event = #PB_Event_SysTray)
      If (EventGadget() = #SystrayId)
        ; Zeigt das Fenster an
        RemoveSysTrayIcon(#SystrayId)
        HideWindow(#WindowId, 0)
        SetWindowState(#WindowId, #PB_Window_Normal)
        SetActiveWindow(#WindowId)
      EndIf
    EndIf
    
  Until (event = #PB_Event_CloseWindow)
EndIf
ein icon musst du noch laden.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
teejex
Beiträge: 44
Registriert: 30.03.2009 17:55
Computerausstattung: PB4.40 Pro
C++: MinGW :)
Java: Eclipse :)
Notepad++ :)
--
Notebook/eher Mobile Workstation :D : Q9800 - nVidia - 4GB Ram - 500GB HD

Re: Beim PC start das programm starten

Beitrag von teejex »

oder du machst es über einen registry-eintrag.

http://purearea.net/pb/CodeArchiv/Inclu ... nclude.pbi
Mit dem Script ist es nicht sonderlich schwierig einen zu erstellen.

CurrentMachine/User - Software - Microsoft - Windows - Current Version - Run
Tut mir leid, ich glaube ganz richtig ist der Schlüssel nicht :D

Grüße
Teejex

Edit: mit Ausführen->"regedit" kannst du nachschauen obs geklappt hat
我是单洋。
我是德国人。
parzival
Beiträge: 5
Registriert: 26.03.2010 21:25

Re: Beim PC start das programm starten

Beitrag von parzival »

hi,
sorry das ich so lange nicht geantwortet hab, hab einfach keine zeit gefunden mir die beispiele anzukucken, jetzt aber schon!
danke erstmal für die beispiele.
CSHW89´s hat mir sehr viel weiter geholfen aber die codes von al90 funktionieren leider nicht :(
liegts daran, dass ich die winapi nicht hab und wo ist eig. der autostart ordner? bei Windows xp fand ich ihn noch aber bei W7 hab ihc ihn nciht gefunden,
mfg
parzival
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Beim PC start das programm starten

Beitrag von man-in-black »

musst mal das startmenu bei win7 öffnen und dann auf "Alle Programme" gehn. irgendwo da is der autostartordner...

pfad (findest du bei den eigenschaften des ordners "Autostart" im startmenu):

C:\Users\-----DEIN------NAME-------\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
(hab alles, kann alles, weiß alles!!^^)

Bild
davidpsd
Beiträge: 10
Registriert: 25.04.2010 10:26

Re: Beim PC start das programm starten

Beitrag von davidpsd »

Hallo!
parzival hat geschrieben:[...] die codes von al90 funktionieren leider nicht :(
liegts daran, dass ich die winapi nicht hab?
Die WinApi hat jeder der Windows benutzt, nur sind Zugriffe auf die WinApi nicht möglich, wenn du die Demo-Version von PB hast. Außerdem brauchst du den Code von al90 gar nicht, du musst dein Programm nur in den Autostart-Ordner reinschieben.

lG davidpsd
Antworten