AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unsichtbares Programm

Ein Thema von Guido Eisenbeis · begonnen am 6. Mai 2008 · letzter Beitrag vom 18. Mai 2008
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#21

Re: Unsichtbares Programm

  Alt 7. Mai 2008, 17:57
kp ob das hilft aber das habe ich selbst mal benutzt

Delphi-Quellcode:
procedure CopyTextToClipboard(aWnd: HWND; aText: PChar);
var
  Data: THandle;
  DataPtr: Pointer;
  Size: Integer;
  oldWND: HWND;
begin
  Size := Length(aText) + 1;
  OpenClipboard(aWnd); //Open Clipboard
  try
    EmptyClipboard; // Clear Clipboard
    oldWND := SetClipboardViewer(aWnd); // Clipboard für Programm registr.
    Data := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Size); // Get Memory
    try
      DataPtr := GlobalLock(Data);
      try
        Move(aText^, DataPtr^, Size);
        SetClipboardData(CF_TEXT, Data); // Clpbrd-Format as Text & send Text
      finally
        GlobalUnlock(Data);
      end;
    except
      GlobalFree(Data); // Free res. Memory
      raise; // Get global Memory Err
    end;
    ChangeClipboardChain(aWnd, oldWND);
  finally
    CloseClipboard; //Close Clipboard
  end;
end;
Aufruf mit

CopyTextToClipboard(0, PChar('text'));
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#22

Re: Unsichtbares Programm

  Alt 7. Mai 2008, 18:10
Mann, was seid ihr schnell! Das Folgende wollte ich eigentlich als Edit in meinen obigen Post einfügen, da kommt schon das nächste Posting rein! *Respekt*. Ich schreibe es jetzt hier, wie ich es oben posten wollte:

Oops, da waren ja noch zwei Postings!

@himitsu

Danke für den Hinweis. Habs mittlerweile auch gesehen. *rot-werd*
"MessageWindow" scheint es für Delphi Win32 nicht zu geben!?


@nicodex

Zitat von nicodex:
SetClipboardData sollte fehlschlagen, wenn man EmptyClipboard aufruft nachdem man kein Handle bei OpenClipboard angibt.
Doch, scheint zu funkionieren! Auch dir danke!

Guido.




Und jetzt wieder das Aktuelle: (Und wehe es postet wieder jemand, bevor ich fertig geschrieben habe! )

Zitat von himitsu:
hmmm, und mein MSDN-Auszug interessierte keinen *schnüff*
Doch, hab es ja dann doch gesehen! *sorry*

Zitat von himitsu:
z.B.: MSDN-Library durchsuchenCreateFileMapping siehe 1. Parameter (hFile)
INVALID_HANDLE_VALUE ist nur eine Konstante, welche festlegt, daß kein ObjectHandle vorliegt.
Hab ich gesehen.

Zitat von himitsu:
Delphi:
0 für Handle
nil nur bei Pointern
Danke!

Zitat von Mackhack:
Das muesste man in jedem Subforum als Sticky haben. Ich glaube naemlich dass viele mit diesen 2 Werten staendig im Konflikt sind 8)
Sehe ich auch so. Vielleicht nicht ständig, aber alle Jahre wieder.

Danke an alle!

Guido.

Edit: Hat doch wieder einer zwischendurch gepostet! Ich bin einfach zu langsam! *grins*
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#23

Re: Unsichtbares Programm

  Alt 7. Mai 2008, 18:20
Hallo smallsmoker.

Dein Code ist nahezu identisch mit meinem, inclusive der Übergabe von 0 als Handle für OpenClipboard(). Lediglich zwei Unterschiede konnte ich feststellen: SetClipboardViewer() und ChangeClipboardChain(). Für mein Programm ist eine Registrierung als Clipboard-Viewer jedoch uninterssant.

Dennoch auch dir vielen Dank!

Guido.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.076 Beiträge
 
Delphi 12 Athens
 
#24

Re: Unsichtbares Programm

  Alt 7. Mai 2008, 18:36
erstellen eines Message-Only-Windows
Delphi-Quellcode:
Var VI: TOSVersionInfo;
  S: String;

VI.OSVersionInfoSize := SizeOf(TOSVersionInfo);
If GetVersionEx(VI) and (VI.MajorVersion >= 5) Then
  S := 'MessageElse S := 'STATIC';
MessageWindow := CreateWindowExA(0, PChar(S), nil,
  WS_POPUP, 0, 0, 0, 0, 0, 0, GetCurrentProcessID, nil);
Quelle: MSDN > About Window Classes



alternativ kann man auch eines erstellen, indem man einfach ein neues Window (STATIC) erstellt und ihm als Parent ein anderes Message-Only-Window verpaßt
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#25

Re: Unsichtbares Programm

  Alt 7. Mai 2008, 18:50
Hallo himitsu,

danke, diesen Tipp werde ich bestimmt noch brauchen können.

Guido.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.076 Beiträge
 
Delphi 12 Athens
 
#26

Re: Unsichtbares Programm

  Alt 7. Mai 2008, 19:07
nja viele lassen ja ihre "privaten" Messages über die Fensterprozedur (TForm), oder über die Application (TApplication) laufen.

aber wenn man mal ohne diese Fenster (TForm und TAplication) auskommen muß, dann bietet sich hervoragend sowas an ... ist ja extra da, damit man daran Fensternachrichten (SendMessage und Co.) senden und sie natürlich auch empfangen kann


PS: der Zwischenspeicher arbeitet teilweise auch über Fensternachrichten, drum wird auch manchmal ein Fenster benötigt 8)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#27

Re: Unsichtbares Programm

  Alt 18. Mai 2008, 06:51
OK, mein Programm ist fertig und trägt den Namen "ThoGi ContextmenuTools".
Mit ihm ist es möglich, zwei Funktionen zum Explorer-Kontextmenü hinzuzufügen:

"DOS Prompt Here" -> öffnet ein Konsolenfenster im entsprechenden Verzeichnis.
"Path To Clipboard" -> kopiert den Pfad der/des angeklickten Datei/Ordners in die Zwischenablage.

So weit, so gut! (Fast) alles funktioniert einwandfrei, inklusive dem Entfernen der Registry-Keys beim Deinstallieren. Eine klitzekleine Winzigkeit fordert meinen Hang zur Pedanterie *smile*:

Beim Kopieren des Pfades von Verknüpfungen wird halt nicht der Pfad der Vernküpfung in die Zwischenablage kopiert, sondern der Pfad des Verknüpfungs-Ziels.

Beispiel:

Man klickt mit rechts eine Datei an, das Kontextmenü öffnet sich und man wählt "Path To Clipboard". Über den entsprechenden Registry-Eintrag wird meine Applikation gestartet und ein Pfad übergeben.
Ist die angeklickte Datei eine "normale" Datei, z. B. "C:\Test.txt", so wird dieser Pfad korrekt übergeben.
Ist die angeklickte Datei jedoch eine Verknüpfung, z. B. "D:\Test.txt.lnk", so wird dann der Pfad zur Ziel-Datei, also in diesem Fall "C:\Test.txt" übergeben.

Wie kann ich dieses Problem nun so lösen, dass auch bei Verknüpfungen nicht der Pfad zur Ziel-Datei, sondern der Pfad der Vernküpfung selbst übergeben wird? (Wie gesagt, meine App bekommt den Pfad über den Registry-Eintrag, der für das Kontextmenü zuständig ist.)

Ok, ich habe einige andere Tools getestet, die die gleiche Funktionalität zur Verfügung stellen, und es ist bei allen so, dass bei Verknüpfungen der Pfad zum Ziel und nicht der zur Verknüpfung übergeben wird. Wenn wir also hierfür keine Lösung finden, ist das nicht so schlimm. Aber mein Ehrgeiz würde sich freuen, wenn es doch eine Lösung gäbe! *freu*

Guido.
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#28

Re: Unsichtbares Programm

  Alt 18. Mai 2008, 10:34
Ich weiß nicht sicher aber Theoretisch müsste es doch klappen, wenn du das CTI (Cool Tray Icon) verwendest.
Dann das MainForm und den Taskbar eintrag verschwenden lässt und kein Tray Icon benutzt! Dann ist es auch nur noch im Taskmanager zu sehen, allerdings weiß ich nicht, wie groß das Programm ist!
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#29

Re: Unsichtbares Programm

  Alt 18. Mai 2008, 13:01
Hallo BullsEye.

Zitat von BullsEye:
Ich weiß nicht sicher aber Theoretisch müsste es doch klappen, ...
Was müsste klappen? Das Problem, mein Programm unsichtbar laufen zu lassen, ist gelöst. Es gilt das Problem mit den Pfaden zu Verknüpfungen zu lösen! (Siehe #27)

Ich dachte, ich poste es hier, da es sich auf dieses Programm bezieht. Sollte es hier nicht hingehören, öffne ich einen extra Thread.

Guido.
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#30

Re: Unsichtbares Programm

  Alt 18. Mai 2008, 13:08
Zitat von Guido Eisenbeis:

Ich dachte, ich poste es hier, da es sich auf dieses Programm bezieht. Sollte es hier nicht hingehören, öffne ich einen extra Thread.

Guido.
Da es ein neues Problem ist, denke ich wäre es sinnvoller einen neuen Thread zu eröffnen! Da anicht jeder erst 3 Seiten durchließt um auf dem neusten Stand deines Problemes zu sein. Außerdem könntest du somit auch vllt anderen helfen, die das gleiche Problem haben
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz