Autor:
Daniel Schuhmann
Jan
31
Dem Problem der unterschiedlichen Auflösungen wird meist zu wenig Beachtung geschenkt: Der Programmierer arbeitet mit »seiner« Auflösung. Zudem ist das Testen anderer Auflösungen auch mühsam: Die Auflösung des Monitors wirft Desktopsymbole und Fenstergrößen anderer Anwendungen quer durcheinander.

Screenshot des Tools »Application Resolution«
Abhilfe schafft hier das gezielte Versetzen der Anwendung in die gewünschte Auflösung. Das Ziehen mit der Maus auf die gewünschte Fenstergröße ist zwar ebenso mühsam, aber mit einem kleinen Programm genügt der sprichwörtliche Klick.
Weiterlesen
Autor:
Daniel Schuhmann
Jan
26
Wer mit mehreren Monitoren arbeitet, kennt das Problem sicher: In einer Vollbildanwendung oder in einem Spiel wird der Mauszeiger nicht innerhalb des Fensters gehalten, man rutscht versehentlich auf den zweiten Monitor und gerät aus der Anwendung heraus.

Mehrere Monitore: Hier benötigt man CursorClip am häufigsten
Oder es tritt genau der umgekehrte Fall ein: Eine Anwendung »sperrt den Mauszeiger ein«, aber man möchte diese kurzzeitig mit der Maus verlassen. Hier kommt die Funktion ClipCursor ins Spiel.
Weiterlesen
Autor:
Daniel Schuhmann
Jan
25
Früher war es einfach: Unter Windows XP genügte die Eingabe des Befehls sendto, um im Explorer den Ordner Sendto anzuzeigen, in dem die Menüeinträge des Kontextmenüs »Senden an« einzurichten. Mit Windows Vista und Windows 7 funktioniert dies nicht mehr, stattdessen erhalten wir eine Fehlermeldung.

Fehlermeldung beim Öffnen des Ordners SendTo
Der korrekte Ordner befindet sich unterdessen unter der CSIDL APPDATA.
C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\SendTo
Damit wir uns die komplizierte Eingabe des häufig benötigten Ordners sparen können, hilft uns ein kleines Programm.
Weiterlesen
Autor:
Daniel Schuhmann
Jan
24
Zu Beginn des Computerzeitalters waren Programmierer ganz automatisch »bitfest«: Frühe Digitalrechner hatten noch keine QWERTZ-Tastatur, sondern erlaubten nur die bitweise Eingabe. Bei heutigen Computersystemen sind die Bits deutlich in den Hintergrund gedrängt worden, obgleich auch noch heute alles auf ihnen basiert.
Die folgenden Codeschnipsel erlauben auch für ungeübte auf einfache Weise das Setzen, Löschen und Abfragen von Bits.
1
2
3
4
| function GetBit(const Value: DWord; const Bit: Byte): Boolean;
begin
Result := (Value and (1 shl Bit)) <> 0;
end; |
1
2
3
4
| function ClearBit(const Value: DWord; const Bit: Byte): DWord;
begin
Result := Value and not (1 shl Bit);
end; |
1
2
3
4
| function SetBit(const Value: DWord; const Bit: Byte): DWord;
begin
Result := Value or (1 shl Bit);
end; |
1
2
3
4
5
| function EnableBit(const Value: DWord; const Bit: Byte;
const TurnOn: Boolean): DWord;
begin
Result := (Value or (1 shl Bit)) xor (DWord(not TurnOn) shl Bit);
end; |
Abgelegt unter:
Code-Schnipsel
Autor:
Daniel Schuhmann
Jan
22
Im vorherigen Artikel ging es unter anderem um das Herausfinden der Klassennamen eines anderen Fensters — einer Fensterbezeichnung, die unabhängig vom Titel ist.

Klassennamen-Inspektor
Mit dem Klassennamen-Inspektor können Sie den Klassennamen des Fensters herausfinden, das sich direkt unter der Maus befindet. Damit lassen sich die Klassennamen von Explorer-Fenstern, der Taskleiste oder auch diversen Unterfenstern leicht herausfinden.
Weiterlesen
Abgelegt unter:
Anwendungen
Autor:
Daniel Schuhmann
Jan
21
WinAPI-Programme, die auf Dialogvorlagen basieren, besitzen stets den Klassennamen #32770. Dies erschwert die Suche nach Programmfenstern mit FindWindow, wenn beispielsweise über IPC Daten ausgetauscht werden sollen.

Hexadezimalrechner
Wird im Dialogeditor hingegen ein Klassenname eingetragen, lässt sich das Programm nicht mehr starten — es sei denn, man greift bei der Erstellung zu einem Trick. Charles Petzold verrät ihn in seinem Buch »Windows-Programmierung«:
Weiterlesen
Autor:
Daniel Schuhmann
Jan
20
Wer eine neue Programmiersprache erlernt, wird zuallererst auf ein Programm namens »Hallo Welt« stoßen — ein Programm, das auf einfache Art zeigt, welche Anweisungen für ein vollständiges Computerprogramm in dieser Sprache nötig sind. Der folgende Codeausschnitt macht klar, um welche Programmiersprache es hier hauptsächlich gehen wird:
1
2
3
4
5
6
7
| program Hello;
{$APPTYPE CONSOLE}
begin
WriteLn('Hello World');
end. |
Und auch der erste Beitrag in diesem Blog darf und muss den Namen »Hallo Welt!« tragen, schließlich soll es in erster Linie um Programmierung gehen. Doch auch Anwender sollen auf ihre Kosten kommen, denn wenn man programmiert, kommt auch immer — naja meistens zumindest — etwas dabei heraus: Ein Programm, mit dem Anwender arbeiten können…
Happy Coding wünscht Daniel Schuhmann
Abgelegt unter:
In eigener Sache