Einzelnen Beitrag anzeigen

pistazie

Registriert seit: 12. Nov 2003
Ort: Augsburg
18 Beiträge
 
#9

Re: Keine Aktivierung der Form bei Aufruf über Tastenkombina

  Alt 12. Nov 2003, 13:31
ich glaube so ist es besser:

Delphi-Quellcode:
//Nachricht mit Keycode 0 wird von Anwendung empfangen://
procedure TForm1.WMTimeChange(var Message: TMessage);
var
   Result, Gesamthex, Hexawert, Hinten, Vorne, Ausgabe : String;
begin
   if Chr(Message.WParam) = #0 then
   begin
      MemoEingabe.Text := '';
      MemoAusgabe.Text := '';
      Formfuellen(Result,Gesamthex,Hexawert,Vorne,Hinten,Ausgabe);
   end
   else
      inherited;
end;

//##############################################################################
//Stand: 17.10.2003
//Autor:
//Beschr:Wandelt den Hexadezimalen Wert in den entsprechenden dezimalen Ascii-Code und
// diesen in das entsprechende Ascii-Zeichen
//Version: 1.1
//Global: -
//Input: Gesamthex,Hexawert
//Output:
//Result:
//Exception:
function TForm1.HexToAsciiToZeichen(Gesamthex,Hexawert : String) : String;
var
   Asciicode, Gesamtwort : String;
   AsciiInt,PosLeer, PosD, PosA : Integer;
   Buchstabe : String;
begin
   Gesamthex := MemoEingabe.Text;
   Gesamtwort := '';
   repeat
      PosLeer := Pos(' ', Gesamthex);
      if (PosLeer > 0) then
      begin
         Delete(Gesamthex,PosLeer,1);
      end;
      PosD := Pos(#$D, Gesamthex);
      if (PosD > 0) then
      begin
         Delete(Gesamthex,PosD,1);
      end;
      PosA := Pos(#$A, Gesamthex);
      if (PosA > 0) then
      begin
         Delete(Gesamthex,PosA,1);
      end;
   until (PosLeer = 0);

   repeat
      //Aus dem gesamten String(Gesamthex) sollen in 2er-Zeichen(Hexawert) Teilstrings extrahiert werden:
      Hexawert := Copy(Gesamthex, 1, 2);
      if copy(Hexawert,2,2) <> 'then
      begin
         //Umwandeln Hexadez zu Asciicode(Dez):
         Asciicode := IntToStr(StrToInt('$' + Hexawert));
         AsciiInt := StrToInt(Asciicode);
         if (AsciiInt >= 32) then
         begin
            //Umwandeln Asciicode zu Asciizeichen:
            Buchstabe := Chr(AsciiInt);
         end
         else
         begin
            Buchstabe := ' ';
         end;
         Gesamtwort := Gesamtwort + Buchstabe;
         Delete(Gesamthex, 1, 2);
         Result := Gesamtwort;
         end
   until (Gesamthex = '');
end;


//Form mit Inhalt://
procedure TForm1.Formfuellen(Result,Gesamthex,Hexawert,Vorne,Hinten : String; var Ausgabe : String);
var
   Stringlaenge,PosSeparator : Integer;
begin
   MemoEingabe.PasteFromClipboard;
   Result := HexToAsciiToZeichen(Gesamthex,Hexawert);
   Stringlaenge := Length(Result);
   repeat
      PosSeparator := Pos('/', Result);
      if (PosSeparator > 0) then
      begin
         Vorne := copy(Result,1,PosSeparator-1);
         Hinten := copy(Result,PosSeparator+1,Stringlaenge);
         Delete(Result, PosSeparator,1);
         Result := Hinten;
         Ausgabe := Vorne + #13#10 + Hinten;
         Result := Ausgabe;
      end;
   until (PosSeparator = 0);
   MemoAusgabe.Text := Result;
end;

//Gesamtablauf://
procedure TForm1.FormActivate(Sender: TObject);
var
   Result, Gesamthex, Hexawert, Hinten, Vorne, Ausgabe : String;
   begin
      MemoEingabe.Text := '';
      MemoAusgabe.Text := '';
      Formfuellen(Result,Gesamthex,Hexawert,Vorne,Hinten,Ausgabe);
//   ShowMessage('Hallo');
   end;

//Mehrfachstart verhindern://
var
   mHandle: THandle;
   ustrProgName : String;


Initialization
begin
   //ShowMessage(Application.ExeName);
   ustrProgName := 'Terminal.exe' + #0;
   //ustrProgName := Application.ExeName + #0;
  mHandle := CreateMutex(nil,True,@ustrProgName[1]);
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    //Nachricht versenden Keycode 0:
    SendMessage(HWND_BROADCAST, WM_TIMECHANGE, 0, 0);
    //Anwendung läuft bereits:
    //showMessage('Anwendung läuft bereits!');
    //Beendet Anwendung:
    Halt;
   end;
end;

Finalization
begin
   if mHandle <> 0 then CloseHandle(mHandle);
end;

end.
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat