Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hur verifiera om en textfil (loggfil) är öppen av annat prog

Postades av 2002-05-09 00:15:17 - Peo Krook, i forum visual basic - allmänt, Tråden har 10 Kommentarer och lästs av 472 personer

I ett program jag skriver startas ett externt program (för bandavläsning). Jag vill veta när detta program är klart för att därefter låta mitt program fortsätta. Det externa programmet skapar en logfil. Jag tänkte att jag skulle kolla när den är stängd. Hur gör man det i VB?


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-09 00:53:21 - Andreas Hillqvist

Det är enklare att kolla när processen avslutas.
Om du startar programet med shell får du tillbaks ett tal som representerar processens id. Du kan med hjälp av API anrop kontrollera när processen är avslutad.


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-09 01:24:45 - Andreas Hillqvist

Har gjort en liten funktion som kanske kan hjälpa dig. Klistra in följande kod i en modul:
<code>
Option Explicit

Private Const INFINITE As Long = &HFFFFFFFF
Private Const SYNCHRONIZE As Long = &H100000

Private Const WAIT_FAILED As Long = &HFFFFFFFF
Private Const WAIT_OBJECT_0 As Long = &H0&
Private Const WAIT_ABANDONED As Long = &H80&
Private Const WAIT_TIMEOUT = &H102&

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal DesiredAccess As Long, ByVal bInheritHandle As Long, ByVal ProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal Milliseconds As Long) As Long

Public Function ShellEx(ByVal PathName As String, Optional WindowStyle As VbAppWinStyle = vbNormalFocus, Optional TimeOut As Long = INFINITE)
Dim ProcessId As Long
Dim hProcess As Long
Dim lReturn As Long
ProcessId = Shell(PathName, WindowStyle)
If ProcessId Then
hProcess = OpenProcess(SYNCHRONIZE, 0, ProcessId)
If hProcess Then
lReturn = WaitForSingleObject(hProcess, TimeOut)
CloseHandle hProcess
Select Case lReturn
Case WAIT_OBJECT_0 'Allt ok
Case WAIT_TIMEOUT
Err.Raise vbObjectError + 1, "ShellEx", "Timeout"
Case WAIT_FAILED
Err.Raise vbObjectError + 2, "ShellEx", "Failed"
Case WAIT_ABANDONED
Err.Raise vbObjectError + 3, "ShellEx", "Abandoned"
End Select
End If
ShellEx = ProcessId
End If
End Sub
</code>


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-09 11:04:35 - Sven Åke Persson

Hej
Om du inte vill krångla med API :er in absurdum som Andreas
kan du göra så här,funkar alldeles utmärkt.

Private Sub Command1_Click()
Dim ret As Double
On Error GoTo OpenError
'Här öppnar du ditt logprogram där jag skrivit Notepad
'Obs viktigtt att du skriver hela sökvägen
ret = Shell("C:\Windows\NotePad.exe", vbNormalFocus)
Do Until ret <> 0
DoEvents
Loop
MsgBox ("LoggProgrammet Klart")
OpenOk:
Exit Sub
OpenError:
MsgBox "Fel vid öppnandet av loggprogram"
Resume OpenOk
End Sub

mvh
Sven



Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-09 12:22:47 - Andreas Hillqvist

Jag skulle skämas om jag var du SvenPon. Om man ska klaga, kan du ju kontrollera att du har rätt.

Ser inte vitsen med din kod. Fortsätter oavsett om processen är klart eller ej. Om shell skulle retunera 0 kommer en evighetslopp att starta.

Kan du vara vänlig att förklara vad du försöker åstakomma med din kod?


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-09 16:50:12 - Sven Åke Persson

Hej
>Jag skulle skämas om jag var du SvenPon
Jag skulle skämmas om jag inte kunde stava vanliga svenska ord !

"Ständigt denna vessla" som Ture Sventon skulle säga.

I vilket läge skulle ret aldrig kunna bli 0 ?
Shell
Runs an executable program and returns a Variant (Double) representing the program's task ID if successful, otherwise it returns zero.

undrar
Sven




Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-12 09:23:14 - Peo Krook

Tack Andreas och Sven för era tips!

Peo


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-15 22:30:38 - Peo Krook

Jag fick detta att funka ....MEN....
Den process jag vill få koll på är bandavläsning, vilket av naturliga skäl kan ta mycket lång tid. Och denna kod gör att mitt program går i vänteläge tills dess att bandavläsningen är klar. Användaren kan därför inte jobba vidare med andra funktioner som jag hade tänkt. Ja inte ens minimera formuläret/formulären.

Jag skulle därför behöva ett tips om det går att utföra samma typ av kontroll utan att låsa det egna programmet.


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-15 23:41:01 - Niklas Jansson

Spara Process-IDn i en statisk eller global variabel. Kolla med en timer verje sekund, eller var 5:e sekund eller något med koden ovan.

Lås programmet tills den är fri.

/Niklas Jansson


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-15 23:51:44 - Andreas Hillqvist

Har skapat och laddat upp et exempel:
Programarkivet:Startar en process och känner av när den avslutas.


Svara

Sv: Hur verifiera om en textfil (loggfil) är öppen av annat

Postades av 2002-05-16 00:24:36 - Peo Krook

Tack igen Andreas (och Niklas).

Att lägga WaitForSingleObject i Timer-subben.... Det är ju lysande. Jag höll på att grotta med timer-kontrollen på en massa andra (felaktiga) sätt.

KANON!
Tack än en gång.
Peo


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 612
27 953
271 709
6 566
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies