# Hi Leute...



## Goku0206 (20. November 2002)

Hi Leute 
Na wie gehts so???
Naja ich fange gerade mit VB an... und hab da mal son Problem...

Also ich möchte gerne mal ein Progrämmchen schreiben das de meinen PC automatisch neustartet aber ich muss einfach nur auf die exe klicken und dann macht der das direkt... ohne auswahl ... ok? Sicher? usw.. ^^ also einfach exe und dann neustarten... kann mir jhemadn sagen ob und wenn ja wie das geht? Naja ich hab da sowas aber irgendwie naja ich hoffe mal auf viele Antworten 

Achja ich fände es echt super wenn mich einer in ICQ adden würde... und mir so immer rat und tat zur seite stehen würde... ich wütrde dem jenigen auif ewigkeit dankbar sein  hier meine icq: 100976287


Cu euer Goku


----------



## Dario Linsky (20. November 2002)

Du musst einfach ein neues Projekt anlegen. Aus dem Projekt entfernst Du dann alle Formulare und fügst stattdessen ein neues Modul hinzu, wo du folgenden Code reinschreibst:

```
Public Declare Function ExitWindows Lib "user32" Alias "ExitWindows" (ByVal dwReserved As Long, ByVal uReturnCode As Long) As Long
Public Const EWX_REBOOT = 2

Private Sub Main()
ExitWindows EWX_REBOOT, 0
End Sub
```
In den Projektoptionen (im Menü unter Projekt, Einstellungen) stellst Du das Startobjekt auf "Sub Main" um.


----------



## Goku0206 (20. November 2002)

danke ich hab da aber nen fehler... leigt glaub ich daran das ich win xp habe ^^ also der fehler lautet:

*
Runtine error '453'
Can't find dll entry point ExitWindows in user32
*

Bitte helft mir 

Naja cu euer Silas


----------



## Dario Linsky (20. November 2002)

Ich hab mal nachgeforscht und rausgefunden, dass das bei den NT-System nicht mehr so funktioniert. Da müsste man das alles etwas verändern, damit das trotzdem klappt.

Siehe auch auf folgenden Seiten:
http://scifi.pages.at/bdsx/vb6/vb6_reboot.htm
http://www.activevb-archiv.de/vb/VBtips/VBtip0418.shtml


----------



## Goku0206 (21. November 2002)

Hoi vielen dank find ich echt nett von dir 

Naja der erste Link ist ok ^^
Beim 2 versteh ich gar nichts 

Obwohl beim ersten versteh ich auch nicht so wirklich alles aber egal... weisst du denn jetzt wie ich das ohne so ein menü mache?? also einfach doppelklick auf die exe und dann startet er neu?? Das wäre cool vielen dank

Cu euer Noob Goku


----------



## Dario Linsky (21. November 2002)

Das machst Du genau so, wie ich das im ersten Beitrag schon beschrieben hab. Der einzige Unterschied ist der, dass Du den entsprechenden Code für Windows NT benutzen musst.


----------



## Goku0206 (21. November 2002)

argrml ^^
Man ich krieg kopfschmerzen ^^

Kannste mir den code nicht sagen ich weiss der sthet irgendwo auf dieser site die du mir genannt hast aber .. da steht soviel was ich nicht verstehe... kannst du mir nicht einfach den code geben?? *gg*

Bitte wär echt viel leichter...  Sorry ich bin dumm  

Cu euer Silas...


----------



## Grimreaper (21. November 2002)

Man was gibts da nicht zu verstehen? Geh auf ActiveVB (siehe Link von asphyxia) und lad dir das Projekt als Zip runter. Lass ihn dann mal laufen und versuch den Source nachzuvollziehen. Der ist ganr nicht mal so kompliziert wie er aussieht. Folgendes passiert da: Shutdownfunktion prüft was für ein OS läuft. Bei NT/2000/XP müssen erst die Berechtigungen seitens des OS erteilt werden (Token-Priviledges). Bei 98 wird ggf. der Explorer beendet. Je nachdem was für Flags gesetzt wird der Computer heruntergefahren (Force oder normal), neugestartet oder der User ausgeloggt.
Wenn du so ein Neuling bist solltest du erst recht nicht erwarten, dass dir jemand deine Progs schreibt, so lernst du nie was. Außerdem solltest du vielleicht API's zuerst meiden und dich einfacheren Programmen widmen.

mfg Grimreaper


----------



## Goku0206 (21. November 2002)

> _Original geschrieben von Grimreaper _
> *
> Wenn du so ein Neuling bist solltest du erst recht nicht erwarten, dass dir jemand deine Progs schreibt, so lernst du nie was. Außerdem solltest du vielleicht API's zuerst meiden und dich einfacheren Programmen widmen.
> 
> mfg Grimreaper *



Ok du hast recht sorry  naja tut mir echt leid  Aber sag bzw. zeig mir mal ein paar leichtere Programme???? Und was sind denn API's ^^

Naja Cu euer Goku


----------



## Dario Linsky (21. November 2002)

> Wenn du so ein Neuling bist solltest du erst recht nicht erwarten, dass dir jemand deine Progs schreibt, so lernst du nie was.


Grundsätzlich stimm ich Dir da schon zu, auch wenn das etwas überdeutlich rüberkam. 



> Außerdem solltest du vielleicht API's zuerst meiden und dich einfacheren Programmen widmen.


Das wird in der Welt der Windows-Programmierung (vor allem mit VB) nur ziemlich schwierig, weil da so gut wie alles (mehr oder weniger direkt) über API-Funktionen geregelt wird.
API-Funktionen sind im Prinzip Funktionen, die Windows von sich aus zur Verfügung stellt. Diese Funktionen sind teilweise sehr maschinennah und so tief im Betriebssystem integriert, dass man sich damit viel Arbeit sparen kann. Ausserdem sind solche Funktionen normalerweise wesentlich schneller als selbstgeschriebene.



> Aber sag bzw. zeig mir mal ein paar leichtere Programme????


Hello World? 
Na, okay... das ist schon *zu* einfach. 

Ein Tool zum neu starten des Computers ist meiner Meinung nach schon ein relativ guter Einstieg in den Umgang mit dem Windows-API. Aber vorher sollten natürlich grundsätzlich schon ein paar Vorkenntnisse der Sprache vorhanden sein.
Mach Dich am besten erst mal mit den Kontrollstrukturen (Bedingungen, Schleifen, und so weiter) aus Visual Basic vertraut, bevor Du grössere Projekte anfängst.
Wie die Erfinder von C schon gesagt haben, "lernt man eine Programmiersprache am besten, wenn man damit arbeitet". Also nimm Dir einfach kleine Projekte und arbeite die erstmal durch. Nachher kannst Du immer noch umfangreicheres anfangen. 
Die beste Lösung ist in jedem Fall ein Buch, weil das nach und nach immer komplexer werdende Aufgaben stellt.


----------



## Goku0206 (21. November 2002)

Hehe ok vielen dank 

Naja ich hab ein Tutorial was ich persönlich eigentlich recht gut finde:
Hier bin ich bei Lektion 16  

Naja... ich glaub ich gammel da mal etwas rum  aber was mit voll spaß amcht sind die splash screens zu amchen *gg* kann ja schon photoshop und das auch eigentlich recht gut außer diese hammergeilen bilder da frag ich mich immernoch wie man die macht aber egal ^^

Naja bin dann erstmal  cu euer Silas, ich arbeite jetzt erstmal im tut weiter...bye


----------



## Grimreaper (21. November 2002)

He, ich wollt niemanden verletzen oder so. 
Grundsätzlich hat asphyxia damit recht, dass man um APIs wohl nicht rum kommt, meistens dann wenn man etwas proggen will, dass über das eigene Programm hinausgeht (wie z. B. Interaktion mit Windows). APIs sind auch in sofern nicht Einsteigern zu empfehlen, da sie nicht in VB geschrieben sind, sondern in C++. Teilweise sind somit sogar Typenkonvertierungen notwendig.
Ein Tool zum Neustarten des Computers unter Win9x oder das "Flashen" der Anwendung in der Taskleiste sind ein ganz guter Einstieg in API-Programmierung, unter 2000 (-> Neustarten) ist wegen der härteren Sicherheitsrichtlinien so viel drumherum, dass ein Einsteiger schnell überfordert ist.

Wie asphyxia kann ich dir ein Buch sehr empfehlen, um VB zu lernen.

mfg Grimreaper

P.S. Dein Nick is Goku0206, du unterzeichnest aber mit Silas


----------



## Dario Linsky (21. November 2002)

> meistens dann wenn man etwas proggen will, dass über das eigene Programm hinausgeht (wie z. B. Interaktion mit Windows). APIs sind auch in sofern nicht Einsteigern zu empfehlen, da sie nicht in VB geschrieben sind, sondern in C++.


Nicht nur dann, gerade bei VB bzw. Windows-Programmierung kommt man nicht um API-Funktionen herum. VB baut ja schon beinahe vollständig auf dem Windows-API auf: Shell, MsgBox, das Screen- und Printer-Objekt und sämtliche Steuerelemente stammen aus API-Funktionen. 
Abgesehen davon sind API-Funktionen eher in C (und teilweise auch in Assembler) geschrieben. Objektorientierung wird da eher selten gebraucht, dafür aber effiziente und hardwarenahe Funktionen.
Ausserdem zeichnet sich das Windows-API ja auch dadurch aus, dass diese Funktionen mit jeder Programmiersprache genutzt werden können. Ob das nun Pascal, C/C++, VB, Cobol oder sonst irgendwas ist, spielt keine Rolle. 



> Ein Tool zum Neustarten des Computers unter Win9x oder das "Flashen" der Anwendung in der Taskleiste sind ein ganz guter Einstieg in API-Programmierung


Stimmt schon. Aber wie gesagt ist es bei einer Programmiersprache erstmal wesentlich wichtiger, die sequentiellen Abläufe zu beherrschen. Denn diese bestimmen später schliesslich das Programmverhalten.


----------



## Grimreaper (23. November 2002)

Also alda, ich weiß gar nicht warum wir noch diskutieren, wir sehen das doch eigentlich gleich 



> _Original geschrieben von asphyxia _
> *Nicht nur dann, gerade bei VB bzw. Windows-Programmierung kommt man nicht um API-Funktionen herum. VB baut ja schon beinahe vollständig auf dem Windows-API auf: Shell, MsgBox, das Screen- und Printer-Objekt und sämtliche Steuerelemente stammen aus API-Funktionen.*


Das meinte ich eigentlich mit Funktionen die über das eigene Programm hinausgehen (-> Shell). Gut MsgBox würd ich dazu nicht zählen, haste recht.



> _Original geschrieben von asphyxia _
> *Abgesehen davon sind API-Funktionen eher in C (und teilweise auch in Assembler) geschrieben.*


 Da kann ich leider nicht viel zu sagen, ich glaub dir einfach mal 




> _Original geschrieben von asphyxia _
> *Objektorientierung wird da eher selten gebraucht, dafür aber effiziente und hardwarenahe Funktionen.*


Multithreading is z.B. nötig um einen NT-Service zu proggen. Da das nicht geht, muss man einen Umweg über ein anderes Objekt machen. Is aber sicherlich nicht typisch für  Windowsnahe-Funktionen.




> _Original geschrieben von asphyxia _
> *Ausserdem zeichnet sich das Windows-API ja auch dadurch aus, dass diese Funktionen mit jeder Programmiersprache genutzt werden können. Ob das nun Pascal, C/C++, VB, Cobol oder sonst irgendwas ist, spielt keine Rolle. *


Klar, sonst wären sie ja praktisch sinnlos. 



> _Original geschrieben von asphyxia _
> *Stimmt schon. Aber wie gesagt ist es bei einer Programmiersprache erstmal wesentlich wichtiger, die sequentiellen Abläufe zu beherrschen. Denn diese bestimmen später schliesslich das Programmverhalten. *



Sag ich doch! 

mfg Grimreaper


----------



## Nanaki (2. Mai 2003)

Hi leute. Ich kann mich noch nicht so arg in VB aus. Hoffe ihr könn tmir helfen. AAAALLLSSOOOO: Ich will mir ein programm basteln, dass den PC nach einer bestimmten Zeit neu startet. Also wenn der Timer auf 0 ist. Bin bis jetzt so weit:


```
Dim i As Integer

Private Sub Form_Create()
i = 2880
End Sub

Private Sub Timer1_Timer()
i = i - 1
Label2.Caption = i
If i <= 0 Then
EWX_REBOOT
End If
End Sub

Private Sub ende_Click()
Timer1.Enabled = False
End Sub

Private Sub start_Click()
Timer1.Enabled = True
End Sub

Private Sub Command1_Click()
Unload Me
End Sub
```


aber in der Zeile 
EWX_REBOOT
kommt immer dass der Befehl nicht stimmt. Bitte könnt ihr mich korrigieren?


THX schon einmal

MfG
Lord


----------



## Dario Linsky (2. Mai 2003)

1. Du kannst den Timer auch direkt auf das Intervall einstellen, das Du haben willst. Dann brauchst Du nicht noch zusätzlich mitzählen. 

2. EWX_REBOOT ist auch keine Funktion zum Herunterfahren oder Neu starten des Computers, sondern nur eine Konstante, die einen bestimmten Wert enthält.
Die eigentliche Funktion heisst "ExitWindows" (siehe erster Beitrag von mir) und da kann man nur mit EWX_REBOOT (= 2) festlegen, dass neu gestartet werden soll.


----------



## Nanaki (2. Mai 2003)

also müsste es richtig heißen: 


```
Dim i As Integer

Private Sub Form_Create()
i = 2880
End Sub

Private Sub Timer1_Timer()
i = i - 1
Label2.Caption = i
If i <= 0 Then
ExitWindows
End If
End Sub

Private Sub ende_Click()
Timer1.Enabled = False
End Sub

Private Sub start_Click()
Timer1.Enabled = True
End Sub

Private Sub Command1_Click()
Unload Me
End Sub
```

Wobei er bei mir diesenbefehl auch nicht kennt. Kannst du bitte bitte mir den fertigen code posten? Ich würd mich sehr darüber freuen.

P.S. Das programm soll mitzählen. Ich will sehen wie lange noch bis zum reboot. Der PC ist ein alter 200MHz auf dem ein paar server laufen und nach 2 Tagen sollte er rebootet werden wegen dem arbeitsspeicher.


----------



## Dario Linsky (2. Mai 2003)

Du musst die Funktion auch erst importieren. Fertiger Code steht eigentlich schon in meinem ersten Beitrag hier - die ersten beiden Zeilen sind wichtig.


----------



## Nanaki (3. Mai 2003)

jetzt hats klick gemacht. thx

aber noch eine frage *nerv*

ich hab nun ein programm wo eine zah ausgerechnet wird. Diese besitzt aber VIELE stellen nach dem Komma. Gibt es eine funktion, dass diese Stellen gestrichen werden oder besser gesagt: abgerundet werden. Runden kann ich bereist aber dass es immer abgerundet wird....


THX schon einmal


----------



## Nanaki (3. Mai 2003)

habs selbst gelöst. Hab nochmals in msdn nachgeschaut und da stand der int befehl


----------



## myplex (6. August 2004)

Und kannst auch in den Form_Load einfach folgendes schreiben:

Shell "shutdown -s"

Damit wird der DOS-Befehl "shutdown-s" ausgeführt und der Computer müsste runterfahren

Wenn neustarten willst = Shell "shutdown -r"

Weitere Befehle kannst du angezeigt bekommen, wenn du in Ausführen "cmd" eingibst und in der Eingabeaufforderung "shutdown" eingibst !


----------

