Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
muhQ
Newbie
Newbie

Anmeldedatum: 22.04.2009
Beiträge: 2

Datei "geöffnet" Problem
Verfasst am: 22.04.2009, 14:23

Hallo erstmal an alle, hab mich entschlossen hier mal zu posten, nachdem mich das Problem fast zur weissglut treibt und ich kompetente Hilfe suche*g*

Also mein Problem ist folgendes:

Ich habe ein ziemlich großes altes VB6 Project, mit dessen Hilfe ich Office Dateien auf Client PCs hochlade, diese den Benutzer verändern lasse und dann wieder in meine DB hochlade. Dies funktioniert auch schon seit jahren super. Jetzt benötige ich aber zusätzlich für einen Kunden die OpenOffice anpassung und hier fangen meine Probs an.

Das Dokument wird bisher so gestartet:

[code]Public Function MyShellExecute(document As String) As Boolean
MyShellExecute = False

On Error Resume Next
Dim execinfo As SHELLEXECUTEINFO
execinfo.cbSize = Len(execinfo)
execinfo.lpVerb = "open"
execinfo.lpFile = document
execinfo.fMask = SEE_MASK_NOCLOSEPROCESS + SEE_MASK_FLAG_DDEWAIT
execinfo.nShow = SW_SHOWNORMAL

Dim ret As Long
Err = 0
ret = ShellExecuteEx(execinfo)
If (ret = 0) Then
DisplayError "Fehler beim Öffnen des Dokuments " & Chr(34) & document & Chr(34)
Exit Function
End If

uProc.hprocess = execinfo.hprocess

'warten, bis gestarteter Prozess bereit, maximal 5000ms lang
If uProc.hprocess <> 0 Then
ret = WaitForInputIdle(uProc.hprocess, 5000)
If Err Or ret = &HFFFFFFFF Then
WriteError "Fehler: WaitForInputIdle misslungen in frm_roXtra:MyShellExecute()"
End If
End If
On Error GoTo 0
MyShellExecute = True ' wenn wir soweit gekommen sind waren wir erfolgreich
End Function[/code]

so, das funktioniert ja auch super. Jetzt fange ich an auf das Dokument zu pollen. Hierzu öffne ich das Dokument zum schreiben. Wenn ein Fehler passiert, ist es bereits geöffnet. Wenn ein Unterschied zwischen dem 1. Test und der aktuellen File Situation entsteht wurde die Datei wieder freigegeben --> speichern und Prog beenden, ansonsten neuer durchlauf
So nun mein Problem, OpenOffice (ausser Writer/Word) locked die Datei nicht, meine Funktion bricht also direkt beim 1. Aufruf ab.
Hat hierzu evtl. jemand eine Idee wie ich das realisieren könnte?

der code
[code]
If firstcheck Then
ApplicationDoesLock = IsFileAlreadyOpen(filepath) 'IsFileAlreadyOpen öffnen die Datei zum schreiben
firstcheck = False
Timer1.Interval = 1000
End If
......
If (ApplicationDoesLock And (Not IsFileAlreadyOpen(filepath))) Or _
((Not ApplicationDoesLock) And (lpexitcode <> STILL_ACTIVE)) Then
UnlockFile (filepath)
Unload Me
End If[/code]

was ich schon die ganze Zeit suche sowas wie File.GetHandle() , dann könnte ich ja auf n geändertes Handle pollen??


Hoffe auf euch

Gruß matze
 
muhQ
Newbie
Newbie

Anmeldedatum: 22.04.2009
Beiträge: 2


Verfasst am: 22.04.2009, 16:56

Inzwischen konnte ich das Problem soweit eingrenzen:

OO hat bei manchen benutzern den Quickstarter bereits laufen imho ist bereits ein Process davon am laufen.

da jedoch bei OOExcel und OO PPT die Dateien nicht gelockt werden beim öffnen greift nur meine 2. Abbruchbedinung
[b]((Not ApplicationDoesLock) And (lpexitcode <> STILL_ACTIVE)) Then [/b]

Da jedoch der Quickstarter läuft schlägt immer mein
[b]Call GetExitCodeProcess(uProc.hprocess, lpexitcode)[/b] fehl und returned immer 0, da ich denke ich mal ne falsche PID in uProc.hprocess beim starten meines processes zurückerhalte und gespeichert habe?!

nur kurz was zum aktuellen stand:)
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: bereits geöffnet, datei, vb6

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wie kann ich mich bei euch anmelden?? 914 20.05.2002, 01:28
Keine neuen Beiträge Eine kleine Frage an euch.. 1023 30.09.2007, 09:57
Keine neuen Beiträge TopMost Funktion unter DirectX 1021 27.07.2007, 11:48
Keine neuen Beiträge Wie Funktion nutzen ? 1213 29.06.2007, 21:59
Keine neuen Beiträge update funktion einbauen 1455 29.01.2007, 00:11
 


[ Time: 0.2488s ][ Queries: 82 (0.1538s) ][ GZIP on - Debug on ]