Cybernavigator Posted November 14, 2007 at 01:21 AM Report #147265 Posted November 14, 2007 at 01:21 AM boas noits como faco isto? ver se uma janela está aberta (ver se o programa esta a correr) se sim nao faz nd, se nao, abre o programa. eu sei abrir o programa, n sei eh ver se esta aberto. obgdo desde ja. Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***
TheDark Posted November 14, 2007 at 02:24 AM Report #147269 Posted November 14, 2007 at 02:24 AM http://www.codeproject.com/useritems/find_windows_vb.asp Desaparecido.
Asgorath Posted November 14, 2007 at 08:56 AM Report #147277 Posted November 14, 2007 at 08:56 AM Boas. Dim procs As Process() Dim proc As Process Dim i As Integer = 0 ' get an array of all processes named "app" on server "serverName" procs = Process.GetProcessesByName("sigdin 2003") ' go through each proc named "app" and wait for it to exit For Each proc In procs i += 1 If i > 1 Then MessageBox.Show("O SIGDIN já se encontrar a correr." & vbCrLf & "E aconcelhavel que não use dois ao mesmo tempo", "SIGDIN", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) proc.Kill() Application.ExitThread() Application.Exit() End If Next "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod
Ivo Pereira Posted November 18, 2007 at 12:21 PM Report #148320 Posted November 18, 2007 at 12:21 PM Cybernavigator... resultou ou nao? :dontgetit:
Cybernavigator Posted November 18, 2007 at 05:41 PM Author Report #148415 Posted November 18, 2007 at 05:41 PM O meu prob é um pouco mais complicado do k isto, pk o prgrama abre duas janelas, e ambas têm o nome parecido... O stress eh k o nome do programa eh "c:\pasta\bot\card.exe" e o nome da outra é "c:\pasta\bot\cardgli.exe", pensei em criar um batch e definir o titulo, mas nao sei pk o vb nao me ker abrir o batch... Então adiei um pouco este projecto... Olha, já agora vê se me consegues ajudar no outro tópico de criar imagens, tá a dar cabo de mim, não saio da sepa torta... Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***
TheDark Posted November 18, 2007 at 05:48 PM Report #148418 Posted November 18, 2007 at 05:48 PM O melhor nesse caso é criares um mutex e procurares por ele quando inicias o programa. Tens aqui um exemplo. EDIT: só reparei agora que queres VB.NET. Tens aqui outro exemplo em VB.NET. Desaparecido.
Cybernavigator Posted November 18, 2007 at 05:49 PM Author Report #148419 Posted November 18, 2007 at 05:49 PM Obrigado, vou postar aki o source k está lá no site... Está muito verde pra eu perceber 😁 (ok piada fraca) 'DLL Function Calls Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 'variable constant to match if the mutex exists Private Const ERROR_ALREADY_EXISTS = 183& 'Application Variable Declarations Public Const AppVer = "MyApp v1.1" Dim mutexvalue As Long '*the following code would go in the starting function of your application 'either the main() or form_load() depending on how your application works 'Create an individual mutex value for the application mutexvalue = CreateMutex(ByVal 0&, 1, AppVer) 'If an error occured creating the mutex, that means it 'must have already existed, therefore your application 'is already running If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then 'Inform the user of running the same app twice MsgBox "The application is already running." 'Terminate the application via the reference to it, its hObject value CloseHandle mutexvalue End If *Editado* Fui só eu k não percebi nada disto? :nono1: ? *editado* E eu só reparei agora k editas-te, deixo aki o novo code pra ver se pesco mais alguma coisa. (corrijo, pra ver se pesco alguma coisa ) 'DECLARATIONS Imports System.Threading 'Form level declaration Dim objMutex As Mutex 'CODE Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load objMutex = New Mutex(False, "SINGLE_INSTANCE_APP_MUTEX") If objMutex.WaitOne(0, False) = False Then objMutex.Close() objMutex = Nothing MessageBox.Show("Instance already running") End End If 'if you get to this point it's frist instance 'continue with app End Sub Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now