Suche:

Mittwoch, 24. November 2010

Froyo für Galaxy S

Laut Swisscom wird Android 2.2 ab nächster Woche (29.11 - 5.12) offiziell zur Verfügung stehen.
Ein genaues Veröffentlichungsdatum steht jedoch nicht zur verfügung. Dies geht aus einer Twitter-Konversations von mir mit der Swisscom hervor.
Bin mal gespannt auf Froyo :-)
Übrigens gibt es auch die möglichkeit eine ungebrandete Version von Froyo auf das Handy zu spielen. Dazu muss man einfach ein paar Einstellungen danach abändern. Wer Interesse daran hat, findet im Internet sicher ein paar gute Anleitungen.

Freitag, 5. November 2010

PHP MySQL Datenbank Anbindung

How To Make Connection to DB


$dbname="testdb";
$dbhost="localhost";
$dbuser="username";
$dbpass="password";

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

$SQL="INSERT INTO teilnehmer(lastName,firstName,abteilung,jahrgang)VALUES('$lastName','$firstName','$abteilung','$jahrgang')";

mysql_query($SQL);

Donnerstag, 14. Oktober 2010

Android 2.2 für Galaxy S - Quellcode veröffentlicht

Im Samsungs Open Source Release Center ist neuerdings die Open-Source-Version mit der neuen Firmware für das Galaxy S I9000 verfügbar. Ebenfalls erhältlich ist der Quellcode mit dem angepassten Android 2.2 auch Froyo genannt, dies jedoch leider noch nicht über die Samsung Verwaltungssoftware Kies. Doch dies wird vermutlich bald der Fall sein. In verschiedenen Foren gibt es allerdings schon vorkompilierte Versionen die man mittels Odin installieren kann.
Quelle: golem.de

Auf dem offiziellen Twitterkanal entschuldigt sich Samsung fast täglich für die Verspätung des Froyo Updates, neue Informationen dazu sind allerdings leider noch nicht verfügbar.
Samsung Mobile - Twitter

Freitag, 8. Oktober 2010

About Me

Hallo, mein Name ist Beni Ackle. Ich bin Informatiker und befinde mich aktuell in der Ausbildung, im 3 Lehrjahr. Auf diesem Blog möchte ich verschiedene Anleitungen veröffentlichen. Hauptsächlich zum Thema Programmieren.

Ich arbeite bei der SFS services AG in Heerbrugg. Dort geniesse ich eine hervoragende Ausbildung und darf im Bereich Mobile Development erste Erfahrungen sammeln.

Informationen die ich zusammengetragen habe, werde ich dann auf diesem Blog veröffentlichen.

Freitag, 1. Oktober 2010

Adobe PDF: Interaktiv mit JavaScript

Einführung

Um ein Interaktives PDF zu erstellen brauchen wir eine entsprechende Software. Adobe hat hier eine komfortable Software mit dem Namen Adobe LiveCycle Designer. Diese ist einfach und Intuitiv zu bedienen, nur der JavaScript Editor ist anfangs etwas Gewöhnungsbedürftig.

Im Adobe LiveCycle Designer kann man ein bereits vorhandenes PDF importieren und danach darüber ein Formular mit diversen Funktionen legen.

Um Funktionen oder Felder hinzuzufügen wählen wir auf der rechten Seite unter Library das gewünschte Element aus und ziehen es per Drag and Drop auf unser PDF. Dieses Element können wir nachher anwählen und auf der rechten Seite unter Object diverse Einstellungen setzen. Hier ist es Möglich den Typ, Formatierung, Ausrichtung, Position, Default Wert, Name und Validierungsoptionen zu setzen.

Der Java Script Editor

Um den Java Skript Editor zu öffnen gehen wir in der Programmleiste unter Window auf Script Editor. (CTRL + Shift+F5) Der Script Editor wird nun geöffnet. Dieser ist wahrscheinlich noch leer und grau hinterlegt. In der Titelleiste können wir nun diverse Optionen auswählen. Unter Show kann man sich für jedes Element das gewünschte Event anzeigen lassen. fn zeigt diverse verfügbare Funktionen an. Unter Language kann man zwischen JavaScript und FormCalc auswählen. FormCalc erinnert ein bisschen an die Formeln wie wir sie aus dem Excel kennen. Als letztes kann man noch auswählen ob das Script Clientseitig oder Serverseitig ausgeführt werden soll.

Um nun etwas zu programmieren wählen wir nun ein Feld aus. Danach lassen wir uns unter "Show" "All Events" anzeigen. Wir sehen nun alle verfügbaren Methoden. Näheres zu den wichtigsten Methoden

Java Script anwenden - Teil 1

Variable erstellen

Um Codevorschläge anzuzeigen klicken wir auf fn. Nach jedem Punkt den wir schreiben werden die Vorschläge automatisch angezeigt.

Als erstes erstellen wir eine Variable, in der wir einen String speichern, diesen String string geben wir später in einer messageBox wieder aus. Der Code dazu sieht folgendermassen aus:

var output = topmostSubform.Page1.FieldName.rawValue

var initialisiert die Variable, danach kommt der Name der Variable, welcher nun ein Wert zugewiesen wird. Diesen Wert nehmen wir aus einem Textfeld auf dem PDF. Dazu müssen wir den "Pfad" zu diesem Feld angeben. Am Schluss dieses Pfades steht der Feldname. Mit rawValue lesen wir dann schlussendlich den Inhalt dieses Feldes aus.

Message Box

Den Wert der obigen Variable geben wir nun in einer Message-Box aus:

xfa.host.messageBox(output, "Titel", 3, 0)

Für weitere Informationen zu den verschiedenen Parametern kann man hier weiter lesen:
Adobe - messageBox

Weitere Java-Script Methoden finden Sie hier: Java Script anwenden - Teil 2

FormCalc anwenden

FormCalc ist ähnlich wie Excel und empfiehlt sich für einfache Berechnungen im PDF. Unter Language wechseln wir die Sprache auf FormCalc. Wollen wir dies nur für eine Funktion machen, können wir dies mit Rechtsklick - FormCalc erledigen.

Berechnungen machen wir immer im Event calculate. Wir klicken einfach in der Titelleiste auf fn und wählen hier unsere benötigte Methode aus.

Sum(Variable1, Variable2, Variable3, ....)

So summiert man zum Beispiel verschiedene Zahlen oder Felder miteinander.

Mittwoch, 29. September 2010

Adobe PDF - Java Script anwenden - Teil 2

Object's mit JavaScript zählen

Um alle Object's auf dem PDF zu zählen verwenden wir folgenden Code:

topmostSubform.Page1.nodes.length

Diese Methode gibt die zuerst ein Array mit allen Object's des PDF's zurück. Danach wird mit .length die Grösse dieses Arrays zurückgegeben. Dies entspricht der Anzahl aller Felder und Buttons auf dem PDF.

Bestimmtes Object suchen

Um ein oder mehrere Object's auf dem PDF anzusprechen wählen wir diese mit einer for-Schleife aus. In diesem Beispiel werden alle Felder die mit "SCR-" beginnen ausgewählt.

for (i=0; i < topmostSubform.Page1.nodes.length; i++)
{
var field=topmostSubform.Page1.nodes.item(i)
var fieldName=field.name
if (fieldName.substr(0,4)=="SCR-")
{
// Self generatet Code
}
}

Für jedes Feld auf dem PDF wird überprüft, ob es mit "SCR-" beginnt. Trifft dies zu, kann eine beliebige Funktion aufgerufen oder ausgeführt werden.

Dienstag, 28. September 2010

Adobe LiveCycle Designer - Vordefinierte Methoden

Hier möchte ich noch ein paar der wichtigsten vordefinierten JavaScript Methoden, im LiveCycle Designer von Adobe, vorstellen.

initialize

Wird für alle Objekte initiiert, nachdem der Formularentwurf mit Daten zusammengeführt wurde.

Mit diesem Ereignis können Sie beim Erstellen eines Objekts Aktionen ausführen, die entweder durch eine Benutzeraktion beim Ausfüllen des Formulars oder im Rahmen des Formularerstellungsprozesses verursacht werden. Beispielsweise können Sie die Einstellungen für neue Instanzen eines Teilformularobjekts steuern, welche der Benutzer dem Formular durch Klicken auf eine Schaltfläche hinzufügt.

Adobe - initialize-Ereignis

enter

Wird ausgelöst, wenn ein Feld oder Teilformular den Tastaturfokus erhält, und zwar unabhängig davon, ob dies durch eine Benutzeraktion verursacht wird (Wechsel in ein Feld per Tabulatortaste oder Mausklick) oder durch ein Skript, welches den Fokus programmatisch setzt.

Mit diesem Ereignis können Sie Hilfetext oder andere Meldungen bereitstellen, welche dem Benutzer das Ausfüllen des aktuellen Feldes oder Teilformulars erleichtern. Angenommen, in ein Feld muss ein Wert in einem bestimmten Format eingegeben werden oder beim Ausfüllen eines Feldes sind spezifische Anweisungen zu beachten. In diesem Fall können Sie mit diesem Ereignis eine Meldung einblenden, welche den Benutzer über die besonderen Anforderungen informiert.

Adobe - enter-Ereignis

exit

Wird ausgelöst, wenn das Feld oder Teilformular den Tastaturfokus verliert, und zwar unabhängig davon, ob dies durch eine Benutzeraktion verursacht wird (Wechsel in ein anderes Feld per Tabulatortaste oder Mausklick außerhalb des Feldes) oder durch ein Skript, welches den Fokus programmatisch entfernt.

Dieses Ereignis eignet sich zur Überprüfung von Felddaten, wenn der Benutzer den Fokus von einem Feld entfernt. Angenommen, in ein Feld muss ein Wert eingegeben werden. In diesem Fall können Sie mit diesem Ereignis eine Meldung bereitstellen, welche den Benutzer darauf aufmerksam macht, dass das Formular nur gesendet werden kann, wenn in dieses Feld Daten eingegeben wurden.

Adobe - exit-Ereignis

calculate

Das Ereignis calculate eignet sich zur Aktualisierung von Zahlenwerten in Feldern, weil es unmittelbar nach den meisten anderen Ereignissen initiiert wird. Beispielsweise könnten Sie in einem Bestellformular mit dem Ereignis calculate für ein Feld den Prozentwert der Umsatzsteuer anhand der Bestellkosten errechnen. Die Berechnung wird jedes Mal ausgeführt, wenn die Werte in den Formularfeldern geändert werden. Auf diese Weise wird gewährleistet, dass der für die Umsatzsteuer angezeigte Wert immer korrekt ist.

Adobe - calculate-Ereignis

validate

Wird initiiert, wenn Formularentwurf und Daten zum Formular zusammengeführt werden und wenn ein Feld den Fokus verliert, z. B. wenn ein Benutzer klickt oder die Tabulatortaste drückt, um ein Feld zu verlassen. Dieses Ereignis wird jedes Mal ausgelöst, wenn sich der Wert eines Feldes ändert. Mit Berechnungen und Skripten, die auf dem Ereignis validate platziert werden, lassen sich Überprüfungen durchführen, die spezifischeren Charakter haben als die über die Registerkarte "Wert" der Palette "Objekt" verfügbaren Überprüfungen.

Mit diesem Ereignis können Sie Objektwerte überprüfen. Es eignet sich insbesondere für Situationen, in denen Objektdaten mit bestimmten Regeln übereinstimmen müssen.

Adobe - validate-Ereignis

mouseEnter

Dieses Ereignis wird ausgelöst, wenn der Benutzer beim Ausfüllen des Formulars den Mauszeiger in den Feldbereich bewegt; dabei muss nicht notwendigerweise die Maustaste gedrückt werden.

Sie können dieses Ereignis mit dem Ereignis mouseExit kombinieren, um dem Benutzer beim Ausfüllen des Formulars visuelles Feedback zu liefern. Beispielsweise können Sie mit diesem Ereignis die Rahmen- oder Hintergrundfarbe eines Objekts ändern, damit der Benutzer beim Ausfüllen visuell erkennen kann, dass er sich zurzeit in einem bestimmten Feld befindet.

Adobe - mouseEnter-Ereignis

mouseExit

Dieses Ereignis wird ausgelöst, wenn der Benutzer beim Ausfüllen des Formulars den Mauszeiger aus dem Feld herausbewegt, auch wenn er dabei die Maustaste gedrückt hält.

Sie können dieses Ereignis mit dem Ereignis mouseEnter kombinieren, um dem Benutzer beim Ausfüllen des Formulars visuelles Feedback zu liefern.

Adobe - mouseExit-Ereignis

change

Wird ausgelöst, wenn ein Benutzer beim Ausfüllen des Formulars den Inhalt eines Feldes durch eine definierte Aktion ändert.

Dieses Ereignis eignet sich für Berechnungen oder Skripten, die ausgelöst werden müssen, wenn ein Benutzer beim Ausfüllen des Formulars den Wert eines Feldes ändert.

Adobe - change-Ereignis

mouseDown

Wird initiiert, wenn ein Benutzer beim Ausfüllen des Formulars die Maustaste drückt, während sich der Zeiger in einem Feld befindet.

Dieses Ereignis eignet sich für die Ausführung einer Aktion, nachdem ein Benutzer im Formular auf eine Schaltfläche geklickt oder ein Optionsfeld bzw. ein Kontrollkästchen aktiviert hat.

Adobe - mouseDown-Ereignis

click

Wird initiiert, wenn innerhalb des Bereichs ein Mausklick erfolgt. Wenn ein click-Ereignis für ein Text- oder numerisches Feld ausgelöst wird, werden Berechnungen oder Skripten sofort ausgeführt. Der Wert des Feldes wird aber erst dann aufgrund von Berechnungen und Skripten geändert, wenn das Feld den Fokus verliert.

Dieses Ereignis eignet sich für die Ausführung einer Aktion, nachdem ein Benutzer im Formular auf eine Schaltfläche geklickt oder ein Optionsfeld bzw. ein Kontrollkästchen aktiviert hat. Beispielsweise können Sie mit dem Ereignis click für ein Kontrollkästchen ein Formularfeld ein- und ausblenden.

Adobe - click-Ereignis

docClose

Wird ganz am Ende der Verarbeitung eines Formulars ausgeführt, sofern sämtliche Formularüberprüfungen fehlerfrei durchgeführt wurden.

Dieses Ereignis wird erst spät ausgelöst und führt keine Änderungen am gespeicherten Formular durch. Es soll vielmehr die Möglichkeit bieten, einen Beenden-Status oder eine Fertig-Meldung zu erzeugen.

Adobe - docClose-Ereignis

Weiter Methoden finden Sie hier:

Adobe - Ereignisse

Samstag, 25. September 2010

Samsung Galaxy S i9000 - Codes

Ich habe beim Surfen noch ein paar interessante Codes für das Samsung Galaxy S i9000 gefunden.

Codes

Info und Handy Einstellungen

*#*#INFO#*#* Zeigt Informationen an

Kamera Firmware

*#*#34971539#*#* Zeigt Kamera Firmware an

Betrieb Tests

*#*#0283#*#* Packet Loopback
*#*#0*#*#* "LCD TEST": rot/grün/blau screen, Rufton, Vibration, Abblendung, Megacam, Sensor, Touch, Schlafmodus
*#*#0673#*#* or *#*#0289#*#* Rufton Test
*#*#0842#*#* Vibration + BackLight Test
*#*#2663#*#* Anzeige der Touch Screen Version
*#*#2664#*#* Touch Screen Test (nicht äquivalent zum LCD Test)
*#*#0588#*#* Umgebungssensor Test
*#*#3264#*#* Anzeige der RAM Version

WLAN Test

*#*#232339#*#* oder *#*#526#*#* oder *#*#528#*#* Startet WLAN Test

Anzeige der WiFi MAC Addresse

*#*#232338#*#* Anzeige der WiFi MAC Addresse

GPS

*#*#1472365#*#* GPS Testprogramm
*#*#1575#*#* Ein anderes GPS Testprogramm. Zeigt SV Info und Positions Informationen wenn man ein GPS-Ortssignal erhalten hat.

Bluetooth

*#*#232331#*#* Bluetooth RF Test Modus
*#*#232337#*#* Zeige Bluetooth Device Addresse

Service Modus

*#*#197328640#*#* Service Modus

Das Gerät wechselt in den Service Modus. Um den Servicemodus zu beenden einfach auf die Menu Taste drücken. Für diesen Modus gibt es folgende Codes:

*#*#0011#*#* Anzeige der GSM Informationen
*#*#0228#*#* Zeige Antenne und ADC test. Drücke die Menutaste dann wähle "Back" für weiter Optionen: Basic, MM, RR, GPRS, SIM Information, GSM Neighbour Cell, Handover, Phone control
*#*#0782#*#* RTCTimeRead
*#*#9090#*#* UART Diag
*#*#7284#*#* UART Diag
*#*#4238378#*#* Einstellungen
*#*#2263#*#* Setze GSM/UMTS Frequenzbereich
*#*#2264#*#* WCDMA Einstellungen
*#*#6984125*#*#* auto Antwort
*#*#2886#*#* auto Antwort
*#*#2767*2878#*#* NV zurücksetzten & rebuild (Erfordert Neustart)
*#*#147852#*#* or *#*#369852#*#* or *#*#1478963#*#* Teste Apn Einstellungen
*#*#02280#*#* Batterie Status auslesen
*#*#03#*#* Zeige Nand Flash Unique Nummer
*#*#0589#*#* Zeige Lichtsensor Informationen
*#*#745#*#* Ril Log. Man kann das Log anschauen oder auf die SD Karte speichern

Ausschalten

*#*#7594#*#* Shutdown

Quelle:

android-dls.com - Codes

Freitag, 24. September 2010

AD Gruppen auslesen

Einleitung

In diesem Artikel geht es darum, mit einem C# Programm eine ActiveDirectory - Gruppen abfrage zu realisieren.
Ich möchte herausfinden, ob dem User eine bestimmte Gruppe zugewiesen ist, um danach je nach Ergebniss eine andere Aktion ausführen zu können.

Vorwissen

Wenn ein User im ActiveDirectory einer Gruppe zugewiesen wird, kann man sich diese zum Beispiel in der Computerverwaltung ansehen. Unter User und Gruppen wird diese Gruppe dann eingetragen. In dieser Anleitung machen wir einen Loop über alle vorhandenen Gruppen und warten, bis die gesuchte Gruppe kommt.

Funktion zum Auslesen der AD Gruppe

public Boolean getGroupState ()
{

Boolean groupState = false;

foreach (System.Security.Principal.IdentityReference group in System.Security.Principal.WindowsIdentity.GetCurrent().Groups)
{
if ((group.Translate(typeof(System.Security.Principal.NTAccount))).ToString() == "Domäne\\AD-Group")
{
groupState = true;
break;
}
else
{
groupState = false;
}

return groupState;
}
Der Variable groupState wird mitgegeben, ob die gesuchte Gruppe vorhanden ist. Mit der foreach Schlaufe wird das ganze Gruppenverzeichnis nach dem mitgegebenen Namen durchsucht. Sobald der Name gefunden wurde, wird die Schleife abgebrochen und der Wert von groupState auf true gesetzt.

Mittwoch, 8. September 2010

Die Java Properties Datei

Die Properties Datei

Die Java Properties Dateien sind normale Textdateien, die als einfaches Konfigurationswerkzeug dienen. Diese Dateien können unter einem beliebigen Namen abgelegt werden. Die Dateiendung lautet .properties.

Beispiel

# Kommentar zur Datei
! Ebenfalls Kommentar

Portnummer 3128
hostname = beispielhost
sprache:de

langerText Dieser Text \
ist länger als eine Zeile

Es gibt 3 Möglichkeiten um Schlüssel, Werte und normale Werte einzugeben.

  • Mit Leerzeichen, wobei die Menge der Leerzeichen keine Rolle spielt. Wie im obigen Beispiel der Schlüssel "Portnummer" sowie der Wert "3128".
  • Mit Gleichheitszeichen, die Anzahl Leerzeichen ist gleichgültig. So wie im obigen Beispiel "hostname" und "beispielhost"
  • Mit einem Doppelpunkt, auch hier spielt die Anzahl Leerzeichen keine Rolle

Um den Text auf der nächsten Linie fortzuführen, kann man einen Zeilenumbruch mit folgendem Zeichen realisieren: \

Aufruf im Java Code

Der folgende Code ruft das Properties File "beispiel.properties" auf. Danach wird aus diesem File der Wert "hostname" ausgelesen.

String propertyFile = "beispiel.properties";

Properties prop = new Properties();

try
{
prop.load(new FileInputStream(propertyFile));
// Properties File laden
}
catch (IOException e)
{
// Wenn das laden fehlgeschlagen ist
}

String hostname = prop.getProperty("hostname");
Wikipedia - Java Properties Datei

Dienstag, 31. August 2010

Transparenter Bildschirmschoner erstellen

Einleitung

Dieses HowTo baut auf dem Artikel "C# / .Net - Bildschirmschoner erstellen" auf.

Anwendungs - Szenario

Wieso einen Transparenten Bildschirmschoner erstellen? Ein mögliches Anwendungs - Szenario für einen Transparenten Bildschirmschoner könnte folgendermassen aussehen:
Sie möchten eine hohe Sicherheit am Arbeitsplatz bieten. Niemand soll etwas an ihrem Computer machen können wenn sie länger abwesend sind. Gleichzeitig wollen Sie jedoch jeder Zeit sehen was auf Ihrem Computer gerade läuft. Nun können sie einfach den Transparenten Bildschirmschoner aktivieren und eine Zeitspanne eingeben, nach der der Bildschirmschoner aktiviert wird. Eventuelle Messdaten oder sonstige Aktivitäten wie Videos laufen immer sichtbar weiter. Sobald jedoch jemand etwas machen will am Computer wird dieser gesperrt und eine Passwortabfrage eingeleitet

Dies kann sehr nützlich sein im Business Umfeld. In der Produktion ist es häufig so, dass der User nicht selbst am Computer ist, aber den Computer trotzdem braucht, weil darauf Messdaten laufen.

Vorbereitung

Dieses HowTo baut auf dem Artikel "C# / .Net - Bildschirmschoner erstellen" auf.

Transparenz in .Net / C#

Nachdem wir den Grundbildschirmschoner programmiert haben, fügen wir nun Transparenz hinzu. Bei .Net gibt es mehrere Arten von Transparenz. Wobei nur eine Variante so funktioniert wie wir das wollen.
Opacity Value = 40%
Die einzige funktionierende Variante ist es, bei den Properties der erstellten Form den Wert Opacity auf einen kleineren Wert als 100% zu stellen.
Das sieht im Code dann folgendermassen aus:
this.Opacity = 0.2;


Die folgenden Möglichkeiten funktionieren nicht, da Sie zwar eine Transparenz erzeugen, die aber auch für User Interaktionen gilt. Das heisst, wenn man danach etwas anklickt wird der Event an das dahinter liegende Fenster weitergereicht.
  1. Bei den Properties der erstellten Form, den TransparencyKey auf die Hintergrundfarbe der Form zu wechseln.
  2. Eine weitere Möglichkeit ist es den
    this.BackColor
    Wert auf
    this.BackColor = System.Drawing.Color.Transparent;
    zu setzen. Dazu muss man Transparenz mit folgendem Code noch erlauben:
    this.SetStyle(ControlStyles.SupportsTransparentBackColor, True);
  3. Des weiteren kann man die Transparenz auch mit dem Alpha-Kanal setzen:
    this.BackColor = System.Drawing.Color.FromArgb(100, 255, 255, 255);

Bildschirm sperren

Unter Windows kann man den Bildschirm sperren lassen, sobald der Bildschirmschoner beendet wird. Diese Einstellung kann man direkt im Bildschirmschoner Menu aktivieren. Das Problem dabei ist jedoch, dass bei dieser Variante der ganze Explorer ausgeblendet wird.
Um dies zu umgehen sperre ich den Computer direkt aus dem Bildschirmschoner heraus.
Als erstes muss die benötigte Funktion aus dem Windows System verfügbar gemacht werden. Dies geht folgendermassen:
class Win32
{
[DllImport("user32.dll")]
public static extern bool LockWorkStation();
}
Man importiert einfach die user32.dll aus dem Win32 System Ordner.
Danach kann man diese Funktion aus dem Code heraus verwenden. Um dies zu realisieren habe ich folgende Methode erstellt:
private void lockStation()
{
Win32.LockWorkStation();
Close();
}
Als erstes wird die Workstation gesperrt, danach wird der Bildschirmschoner beendet. Diese Funktion ruft man nun anstatt Close() bei allen User-Events auf.

Bildschirmschoner erstellen

Nun müssen wir nur noch aus der .exe Datei eine .scr Datei erstellen.

Montag, 30. August 2010

C# / .Net - Bildschirmschoner erstellen

Einführung

In diesem Artikel möchte ich erklären, wie man einfach mit C# einen eigenen Bildschirmschoner programmieren kann. Dazu werde ich in diesem Artikel die Grundlagen vermitteln. Aufbauend dazu habe ich noch eine Anleitung für einen "transparenten Bildschirmschoner". Ich habe das ganze mit Visual Studio von Microsoft programmiert.
Bei einem Bildschirmschoner wird eine Windows Form erstellt. Der Rahmen wird deaktiviert, so dass wir nur noch eine nackte Windows Form haben. Diese Form wird beim Laden des Bildschirmschoners an die Grösse des Bildschirmes angepasst.

Vorbereitung

Als erstes erstellen wir im Visual Studio eine neue "Windows Forms Application". Eine Form wird somit automatisch erstellt. Da wir für den Bildschirmschoner jedoch keinen Rand um das Fenster wollen deaktivieren wir diesen bei den Properties unter FormBorderStyle, indem wir hier den Wert None setzen. Danach wählen wir mit Color eine Hintergrundfarbe für unseren Bildschirmschoner. Alternativ lässt sich als Hintergrund auch ein Bild einbinden. Somit währen die Vorbereitungen bereits abgeschlossen.

Hauptprogramm

Main Methode erstellen

Als erstes erstellen wir die Main Methode. Von dieser aus wird nachher der Bildschirmschoner gestartet. Wenn man unter Windows einen Bildschirmschoner starten möchte, kann man 3 Optionen auswählen: Test, Configure, Install. Diese Optionen geben dann dem Bildschirmschoneraufruf einen der folgenden Werte mit: /c, /s oder /p.
Diese Werte wollen wir nun abfangen und dann die jeweils erwünschte Option starten. Dazu verwenden wir die folgende IF-Anweisung:
using System;
using System.Windows.Forms;

namespace ScreensaverHowTo
{
static class ScreenSaver
{
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
if (args[0].ToLower().Trim().Substring(0,2) == "/c")
{
// Configurations-Dialog laden...
}
else if (args[0].ToLower() == "/s")
{
// Bildschirmschoner laden...
}
else if (args[0].ToLower() == "/p")
{
// Vorschau laden...
}
}
else
{
// Keine Argumente angegeben... Bildschirmschoner trotzdem starten...
// Dieser Fall tritt beispielsweise bei einem Doppelklick auf die .scr Datei auf.
}
}
}
}

Bildschirmschoner starten

Um den Bildschirmschoner zu starten rufen wir die folgende Methode auf:
System.Windows.Forms.Application.Run
Als Übergabeparameter geben wir dann den Namen unserer bereits erstellten Form an.
Das sollte dann in etwa so aussehen:
System.Windows.Forms.Application.Run(new ScreenSaverForm());
Da ich für diesen Bildschirmschoner keine Konfiguration zur Verfügung stellen will, gebe ich beim Argument "/c" folgende Meldung aus:
MessageBox.Show("Dieser Bildschirmschoner besitzt keine Optionen die sie sezten können.", "Screen Saver", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
In allen anderen Fällen möchte ich den Bildschirmschoner normal anzeigen lassen, daher habe ich den obigen Code etwas abgekürzt.
static void Main(string[] args)
{
if (args.Length > 0)
{
if (args[0].ToLower().Trim().Substring(0,2) == "/c")
{
MessageBox.Show("Dieser Bildschirmschoner besitzt keine Optionen die sie sezten können.", "Screen Saver", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
System.Windows.Forms.Application.Run(new ScreenSaverForm());
}

Bildschirmschoner an Bildschirmgrösse anpassen

Da der Bildschirmschoner wie weiter oben schon beschrieben nur eine einfache Windows Form ohne Rand ist, müssen wir diese Form nun noch auf die Grösse des Bildschirmes bringen. Wir machen das hier gerade richtig, so dass der Bildschirmschoner nachher auf beliebig vielen Bildschirmen läuft. Also auch wenn Sie auf zwei Monitoren arbeiten. So haben wir dann einen richtigen Multiscreen Bildschirmschoner.
Dazu müssen wir, wenn die Form geladen wird alle Koordinaten der Bildschirme zusammenzählen. Dies machen wir folgendermassen:
private void ScreenSaverForm_Load(object sender, System.EventArgs e)
{

int minY = 0;
int maxY = 0;
int minX = 0;
int maxX = 0;

foreach (Screen screen in Screen.AllScreens)
{
// Die Grösse aller Bildschirme bestimmen

if (screen.Bounds.Left < minX) minX = screen.Bounds.Left; if (screen.Bounds.Right > maxX)
maxX = screen.Bounds.Right;

if (screen.Bounds.Top < minY) minY = screen.Bounds.Top; if (screen.Bounds.Bottom > maxY)
maxY = screen.Bounds.Bottom;
}

Location = new Point(minX, minY);
Height = maxY - minY;
Width = maxX - minX;
Cursor.Hide();
TopMost = true;
}
Wir berechnen zuerst die X Koordinaten und danach die Y Koordinaten. Dies müssen wir für jeden Bildschirm durchführen. Die neuen Werte werden wenn sie grösser sind als schon ausgelesene Monitore übernommen. Haben wir diese Werte ermittelt, wird die Form entsprechend vergrössert.
Ausserdem wird der Mauszeiger ausgeblendet da wir diesen ja nun nicht mer benötigen.

Bildschirmschoner beenden

Um den Bildschirmschoner wieder zu beenden fangen wir folgende Events ab: Das Drücken einer Taste, das Bewegen der Maus sowie das Drücken einer Maustaste.
Dazu erstellt man folgende Events, die man mit der Form verknüpft:
Für die Tastatur fangen wir das drücken einer Taste ab. Wird irgendetwas an der Tastatur gemacht schliessen wir die geöffnete Form einfach, und beenden so den Bildschirmschoner.
private void ScreenSaverForm_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
Close();
}
Das selbe gilt auch für die Maus, ausser das hier auch noch Bewegungen der Maus abgefangen werden.
private void OnMouseEvent(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (!MouseXY.IsEmpty)
{
if (MouseXY != new Point(e.X, e.Y)) {
Close();
}
if (e.Clicks > 0)
{
Close();
}
}
MouseXY = new Point(e.X, e.Y);
}
Als erstes wird überprüft ob eine Änderung an der Maus vorgekommen ist, ist dies der Fall schauen wir ob die Maus bewegt wurde oder ob eine Taste gedrückt wurde. In beiden Fällen schliessen wir die Form so dass der Bildschirmschoner beendet wird.
In der Variablen MouseXY ist die Position des Mauszeigers zur Zeit des Funktionsaufrufes definiert. Verändert sich diese Position schliessen wir den Bildschirmschoner.
Bemerkung: Nicht vergessen die Variable MouseXY zu definieren.
private Point MouseXY;

Bildschirmschoner erstellen.

Ein Bildschirmschoner besteht eigentlich aus einer ganz normalen Exe Datei. Diese Datei muss nur noch umbenennt werden, so dass sie nachher .scr als Endung hat. Somit erkennt das Betriebssystem, dass es sich um einen Bildschirmschoner handelt.

Fazit

Somit haben wir nun einen Bildschirmschoner erstellt, der den Bildschirm mit einer beliebigen Farbe überzieht. Es ist ebenfalls möglich anstatt einer Farbe ein Bild zu verwenden. Wenn sie wissen wollen, wie man einen transparenten Bildschirmschoner erstellt oder wie man den Computer sperren kann, dann lesen Sie den Artikel Transparenter Bildschirmschoner erstellen
Wollen sie noch etwas Abwechslung in den Bildschirmschoner bringen dann lesen Sie unter Geekpedia weiter.

Donnerstag, 5. August 2010

My first post

Willkommen auf meinem Blogg!
Ich freue mich sehr, dass sie den Weg hierher gefunden haben.
Das Ziel diese Bloggs ist es, Wissen welches ich erarbeitet habe weiterzugeben und anderen verfügbar zu machen. Hier werden Sie diverse Anleitungen finden, rund um Computer und Programmieren. Ich freue mich über jeden Kommentar und jede Anregung :-)