AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi hh.exe standardmäßig auf allen Windows-Computern vorhanden?
Thema durchsuchen
Ansicht
Themen-Optionen

hh.exe standardmäßig auf allen Windows-Computern vorhanden?

Ein Thema von PeterPanino · begonnen am 8. Apr 2016 · letzter Beitrag vom 9. Apr 2016
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#1

hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 15:21
Hallo!

Kann man sich eigentlich darauf verlassen, dass das Windows-Dienstprogramm hh.exe auf allen Windows-Computern von Windows 7 bis Windows 10 installiert ist? (hh.exe zeigt CHM-Hilfedateien an).

Ich benötige hh.exe, um mit meinem Programm die Befehlszeile hh.exe -decompile <CHM-Datei> auf dem Computer des Benutzers auszuführen.
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#2

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 15:48
http://keyworks.helpmvp.com/
Nimm doch das hier.. und integriere alles in dein Programm... dann ist auf jeden Fall immer alles an Bord...

Wie lauten denn die Lizenzbedingungen zur originalen HH.exe?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 16:08
Ansonsten schau mal hier in der DP: CHM-Dump

War vor einiger Zeit mal so entstanden, um CHM-Dateien "auszupacken". Eventuell kannst Du ja Teile daraus so umbauen, dass Du direkt in Deinem Programm an die gewünschten Inhalte kommst.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 16:51
Ansonsten schau mal hier in der DP: CHM-Dump

War vor einiger Zeit mal so entstanden, um CHM-Dateien "auszupacken". Eventuell kannst Du ja Teile daraus so umbauen, dass Du direkt in Deinem Programm an die gewünschten Inhalte kommst.
Nach dem Umdeklarieren von 2 Variablen konnte ich es kompilieren:

BytesRead, BytesWritten: ActiveX.LargeUInt; // Int64;

Nach dem Ausführen kam aber diese Meldung des MS Virenwächters:

Virenmeldung nach dem Compilieren.png
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 17:28
Wie soll in den von Dir selbst erstellten Quelltext (bzw. das Kompilat) ein Virus reinkommen?

Habe mir vor Jahren angewöhnt, die Antivirussoftware so zu konfigurieren, dass das Ausgabeverzeichnis von Delphi nicht mehr überwacht wird.

Leider haben irgendwelche "netten Leute" mit Delphi mal entsprechend "unsaubere" Software erstellt, so dass es seit dem immer wieder mal "false positive" gibt. Damit muss man leider leben.

Die mit Delphi 7 kompilierte Version wird jedenfalls nicht als verseucht oder potentielle Gefahr erkannt.

Abgesehen davon bedeutet die Meldung auf dem Bild ja nichts weiter, als sowas wie: "Es könnte unter umständen, eventuell, vielleicht oder eben auch nicht, was nicht wirklich absolut unverfängliches gefunden worden sein." Oder: "Nix genause weiß man nicht."

Da ich das Programm schon seit Jahren immer mal wieder nutzte und bisher keinerlei schädliche Nebenwirkungen habe feststellen können, (und auch noch kein Virenscanner angeschlagen hat) gehe ich davon aus, dass es diese auch nicht gibt.

Ansonsten schick die Exe doch an die "Analysten", eventuell finden die ja nix und sorgen dafür, dass nach 'nem Update auch grundsätzlich nix gefunden wird.

Und falls Du die von Dir benötigen / relevanten Teile des Quelltextes in Dein Programm übernimmst, heißt das nicht, dass dann in der von Dir erstellten Exe auch eine potentielle Gefahr lauert.
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#6

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 19:22
Hier gibt es ein Freeware Tool mit GUI:
Free CHM Decompiler:
http://www.delphisources.ru/pages/pr...ecompiler.html
(leider ohne SRC)
Hab' ich mal ausprobiert, macht was es soll und braucht dazu nur Kontrolle über explorer.exe und services.exe (OpenDialog - Pfadauswahl)... sieht sauber aus...

Wie wäre es mit FreePascal CHMLS.exe !!! Läßt sich von der CommandoZeilenEbene ansteuern...
Dazu gibt es doch auch sicher den SourceCode oder? Hab' ich mir noch nicht angesehen...
Die FreePascal Echse kann auf jeden Fall decompilieren.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 20:06
Wie soll in den von Dir selbst erstellten Quelltext (bzw. das Kompilat) ein Virus reinkommen?

Habe mir vor Jahren angewöhnt, die Antivirussoftware so zu konfigurieren, dass das Ausgabeverzeichnis von Delphi nicht mehr überwacht wird.

Leider haben irgendwelche "netten Leute" mit Delphi mal entsprechend "unsaubere" Software erstellt, so dass es seit dem immer wieder mal "false positive" gibt. Damit muss man leider leben.

Die mit Delphi 7 kompilierte Version wird jedenfalls nicht als verseucht oder potentielle Gefahr erkannt.

Abgesehen davon bedeutet die Meldung auf dem Bild ja nichts weiter, als sowas wie: "Es könnte unter umständen, eventuell, vielleicht oder eben auch nicht, was nicht wirklich absolut unverfängliches gefunden worden sein." Oder: "Nix genause weiß man nicht."

Da ich das Programm schon seit Jahren immer mal wieder nutzte und bisher keinerlei schädliche Nebenwirkungen habe feststellen können, (und auch noch kein Virenscanner angeschlagen hat) gehe ich davon aus, dass es diese auch nicht gibt.

Ansonsten schick die Exe doch an die "Analysten", eventuell finden die ja nix und sorgen dafür, dass nach 'nem Update auch grundsätzlich nix gefunden wird.

Und falls Du die von Dir benötigen / relevanten Teile des Quelltextes in Dein Programm übernimmst, heißt das nicht, dass dann in der von Dir erstellten Exe auch eine potentielle Gefahr lauert.
Ich habe ja nicht gesagt bzw. geschrieben, dass da ein Virus drin ist. Ich habe lediglich berichtet.
  Mit Zitat antworten Zitat
386sx
(Gast)

n/a Beiträge
 
#8

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 8. Apr 2016, 22:08
Ansonsten schau mal hier in der DP: CHM-Dump

War vor einiger Zeit mal so entstanden, um CHM-Dateien "auszupacken". Eventuell kannst Du ja Teile daraus so umbauen, dass Du direkt in Deinem Programm an die gewünschten Inhalte kommst.
Vielen Dank für den Link!

Ein wenig Pfusch von mir dazu:

Delphi-Quellcode:

procedure TFrmMain.TreeDblClick(Sender: TObject);
var
  s, sAsk: string;
  sFileName: string;
  Node: TTreeNode;
  ans: Word; //ausgewählte Anworte

begin
  Node := Tree.Selected;
  if Assigned(Node) then
  begin
    { Create a fully qualified filename by traversing the parent nodes }
    s := Node.Text;
    sFilename := Node.Text;

    repeat
      Node := Node.Parent;
      if Assigned(Node) then
        sFilename := Node.Text + '\' + sFilename;
    until (Node = nil);

    s := sFileName;
    sAsk := 'Möchten Sie das ausgewählte Objekt ' + #13#10 + sFileName + #13#10
      +
      'wirklich bearbeiten?';
    // MessageBox(Handle, PChar(s), 'Doppelklick im Tree', mb_Ok or mb_DefButton1);
    ans := MessageBox(Handle, PChar(sAsk),
      'Bestätigen', mb_YesNoCancel or mb_IconQuestion or mb_DefButton3);
    if ans = idCancel then
    begin
      MessageBox(Handle, 'Abbrechen angeklickt', 'Info', mb_Ok or
        mb_DefButton1);
      exit;
    end;
    if ans = idNo then
    begin
      MessageBox(Handle, 'NEIN angeklickt', 'Info', mb_Ok or mb_DefButton1);
      exit;
    end;
    if ans = idYes then
    begin
      MessageBox(Handle, 'JAhaa angeklickt', 'Info', mb_Ok or mb_DefButton1);
      // Machwas!
      exit;
    end;
  end;
end;
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 9. Apr 2016, 08:53
Ansonsten schau mal hier in der DP: CHM-Dump

War vor einiger Zeit mal so entstanden, um CHM-Dateien "auszupacken". Eventuell kannst Du ja Teile daraus so umbauen, dass Du direkt in Deinem Programm an die gewünschten Inhalte kommst.
Die CHM-Dump-Funktion ist mit dem Treeview extrem verzahnt, was die Wiederverwendbarkeit einschränkt. Könntest du das (als Autor des Projekts) mal entflechten, so dass die reine Dump-Funktion wiederverwendet werden kann?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

AW: hh.exe standardmäßig auf allen Windows-Computern vorhanden?

  Alt 9. Apr 2016, 10:36
Also ich würd' das Formular des Programmes einfach in mein Programm mit aufnehmen, Visible auf false setzten und die Methode DumpCHMFile('Name der zu entpackenden Datei.chm'); aufrufen.

Anschließend ist der Inhalt im Verzeichnis 'Name der zu entpackenden Datei' zu finden.

Dort kannst Du Dir dann die gewünschten Dateien raussuchen oder halt auch durch den Baum gehen, um dort gezielt zu suchen.
Du findest dort ja bereits alle Informationen, die Du für eine weitere Bearbeitung benötigst.

Bist Du damit fertig, löschst Du noch das für den Export erstellte Verzeichnis.

Letztlich sind die Informationen in 'ner CHM-Datei in 'nem Baum organisiert, ohne den wirst Du nicht auskommen.

Wenn Du den Baum dann Zweig für Zweig durchläufst, kannst Du für jeden Zweig TreeChange(Self, Node); aufrufen, also sowas in der Art:
Delphi-Quellcode:
for i := 0 to tree.Items.Count - 1 Do begin
  TreeChange(Self, tree.Items[i]);
end;
Im Attribut Text des Knotens befindet sich der Dateiname, anhand dessen kannst Du entscheiden, ob Du TreeChange für den Zweig überhaupt aufrufen willst.

Ansonsten schau Dir die Methode EnumerateStorage an, dort wird die CHM-Datei letztlich "aufgebröselt".

Mal eine ungetestet hingedaddelte "veränderte" Methode:
Delphi-Quellcode:
procedure TFrmMain.EnumerateStorage(const Storage: IStorage);
var
  Enumerator: IEnumStatStg;
  Stat: TStatStg;
  SubStorage: IStorage;
  Extension: String;
  Src: IStream;
begin
  OleCheck(Storage.EnumElements(0,nil,0,Enumerator));
  while Enumerator.Next(1,Stat,nil) = S_OK do begin
  // Hier ist der Name der Datei / des Verzeichnisses enthalten -> Stat.pwcsName;
    if Stat.dwType = STGTY_STORAGE then begin
      OleCheck(Storage.OpenStorage(Stat.pwcsName,nil, STGM_READ or STGM_SHARE_DENY_WRITE,nil,0,SubStorage));
      EnumerateStorage(SubStorage);
    end else begin
      Extension := UpperCase(ExtractFileExt(Stat.pwcsName));
      if (Extension = '.HTM') or (Extension = '.HTML') then
        // Hier müsstest Du jetzt mal schauen, wo sich genau der Inhalt der HTML-Datei befindet, um ihn dann nach belieben zu verarbeiten.
      OleCheck(SubStorage.OpenStream(Stat.pwcsName,nil,STGM_READ,0,Src));
      // In Src hast Du dann 'nen Stream, den Du (vermutlich) in 'ne TStringList oder sowas laden kannst, für die weitere Verarbeitung.
      end;
    end;
  end;
end;
DumpChmFile könnte dann in etwa so aussehen:
Delphi-Quellcode:
procedure TFrmMain.DumpCHMFile(const Filename: String);
var
  ITStorage: IITStorage;
  S: WideString;
begin
  ITStorage := CoITStorage.Create;
  S := Filename;
  OleCheck(ITStorage.StgOpenStorage(PWideChar(S),nil, STGM_READ or STGM_SHARE_DENY_WRITE,nil,0,FRootStorage));
  EnumerateStorage(FRootStorage);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz