Autor Thema: Attament automatisch starten  (Gelesen 9471 mal)

Offline outerspace

  • Frischling
  • *
  • Beiträge: 39
  • Geschlecht: Männlich
Re:Attament automatisch starten
« Antwort #20 am: 11.12.03 - 13:59:22 »
Dazu habe ich mal das gefunden:
http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=545232

Einfach die Funktion deklarieren und dann aufrufen.

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re:Attament automatisch starten
« Antwort #21 am: 11.12.03 - 17:07:33 »
Coole Sache.  :D
Ich danke dir für den Link. Funktioniert einwandfrei.

-rar
« Letzte Änderung: 11.12.03 - 17:07:59 von rar »
†090620141300

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Attament automatisch starten
« Antwort #22 am: 11.12.03 - 17:20:10 »
Zitat
Zitat
Das einzige was fehlt ist die Abfrage, ob die Datei noch geöffnet ist.

Du könntest prüfen, ob die Anwendung noch geöffnet ist

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (Byval lpClassName&, Byval lpWindowName As String) As Long

Sub Click(Source As Button)
   Dim winHwnd As Long
   Dim RetVal As Long
   winHwnd = FindWindow(0, "Microsoft Word - Dokument1")
   If winHwnd <> 0 Then
      Msgbox "Winword is  open"
   Else
      Msgbox "Winword is not open"
   End If
End Sub

oder, wenn du das "Microsoft Word - Dokument1" durch ein "Microsoft Word - NameDesDokument")

ersetzt, kannst du auch prüfen, ob ein bestimmtes Doc geöffnet ist


Zitat
Selbst R6, wo das Attachmenthandling erweitert worden ist,
prüft das meines Wisens nicht.

yoo, die haben die Funktion bei mir abgekupfert (ReAttach gibt es schon seit 1998 ; R4.6 ) :D
« Letzte Änderung: 11.12.03 - 17:23:48 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline outerspace

  • Frischling
  • *
  • Beiträge: 39
  • Geschlecht: Männlich
Re:Attament automatisch starten
« Antwort #23 am: 11.12.03 - 17:28:06 »
Klingt gut
Die Anwendung findet man heraus indem man die Registry ausliest.
Das hab ich irgendwo schon gelesen(Ich glaube es war in Deiner Schatzkiste eknori),
nur wie finde ich heraus was die Anwendung in die Titelzeile schreibt ?

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Attament automatisch starten
« Antwort #24 am: 11.12.03 - 17:45:54 »
Um ie Anwendung zu finden kannst du zum EInen die Reg auslesen; es gibt aber auch eine API dazu.

Den Fenstertitel ? Starte mal ein Doc im Word; ich glaube der wird immer zusammengesetzt aus Anwendungsname + DocumentenTitel.

Da du den Anhang aber eh detachen musst, kannst du auch dein Tempdir auf das Vorhandensein der Datei prüfen.

Ulrich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline outerspace

  • Frischling
  • *
  • Beiträge: 39
  • Geschlecht: Männlich
Re:Attament automatisch starten
« Antwort #25 am: 11.12.03 - 18:03:33 »
Ich detache die Datei und starte sie mit ShellExecute.
d.h.: ich weiss nicht welche Anwendung gestartet wird.
In Anbetracht der vielen Dateiendungen und der unzähligen Anwendungen, die pro Dateiendung möglich sind,
kann man unmöglich alle Kombinationen erfassen.
Ich fürchte, das ist eine Sackgasse.
Eine API Funktion, die Pfad und Dateinamen als Parameter bekommt und mir dann das Handle der Anwendung oder Null zurückgibt wäre schön, gibt es aber wohl nicht.

Andreas

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Attament automatisch starten
« Antwort #26 am: 11.12.03 - 18:17:28 »
Declare Function FindExecutable Lib "shell32.dll"  Alias "FindExecutableA" (Byval lpFile As String, Byval lpDirectory As String, Byval sResult As String) As Long

Const MAX_PATH = 260
Const ERROR_FILE_NO_ASSOCIATION  = 31
Const ERROR_FILE_NOT_FOUND  = 2
Const ERROR_PATH_NOT_FOUND  = 3
Const ERROR_FILE_SUCCESS = 32 'my constant
Const ERROR_BAD_FORMAT  = 11

Sub Click(Source As Button)
   
   Dim success As Long
   Dim pos As Long
   Dim sResult As String
   Dim msg As String
   
   sResult = Space$(MAX_PATH)
   
  'lpFile: name of the file of interest
  'lpDirectory: location of lpFile
  'sResult: path and name of executable associated with lpFile
   success = FindExecutable("Meine Bilder0001.jpg", "c:\temp\", sResult)
   
   Select Case success
   Case ERROR_FILE_NO_ASSOCIATION: msg = "no association"
   Case ERROR_FILE_NOT_FOUND: msg = "file not found"
   Case ERROR_PATH_NOT_FOUND: msg = "path not found"
   Case ERROR_BAD_FORMAT:     msg = "bad format"
      
   Case Is >= ERROR_FILE_SUCCESS:
      
      pos = Instr(sResult, Chr$(0))
      
      If pos Then
         msg = Left$(sResult, pos - 1)
      End If
      
   End Select
   
   Msgbox msg
   
End Sub

Damit findest du schon mal die Anwendung.

Unter der Voraussetzung, daß immer nur ene Instanz einer Anwendung geöffnet ist, könntest du dann die laufenden Prozesse abfragen. Ist der Prozeß da, ist das Doc geöffnet. Wie gesagt, unter der Voraussetzung das...

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Attament automatisch starten
« Antwort #27 am: 11.12.03 - 18:19:44 »
eine weitere Möglichkeit wäre, sich alle Fenster Handles zu holen und dann den Windows Titel mit dem AtachmentName zu checken  ( es gibt da eine API EnumWindows; muß ich raussuchen, habe ich nicht im Kopf, wie die Syntax ist )


hier isse http://www.vbarchiv.net/vbapi/EnumWindows.php bzw

http://www.mvps.org/vbnet/index.html?code/enums/enumwindowsdemo.htm
« Letzte Änderung: 11.12.03 - 19:13:42 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz