Herkennen user...

Status
Niet open voor verdere reacties.

Frontier

Gebruiker
Lid geworden
11 mei 2006
Berichten
101
Beste HelpMij Collega's,

Ik heb het volgende probleem:
Wij werken met een terminal server, en ik heb wel een script om uit te lezen welke user actief is op deze server binnen access, maar helaas geen script om te herkennen of deze user (bijv. outlook) op de terminal server open heeft staan.

Ik mis dus een combinatie van deze 2.
Voorbeeld:
10 users actief op server waarvan er 1 outlook open heeft staan.
Stel ik heb geen Outlook open staan op deze server, maar met mijn script herkent ie dat outlook WEL open staat. En da's nu net niet de bedoeling. (dit alles werkt natuurlijk wel op een gewoon werkstation omdat je daar iets wel of niet open hebt staan.

Heel internet afgezocht, maar ik kom hiermee niet verder.
Dus kortgezegd:
Wie kan mij helpen met een script m.b.t. het herkennen van een openstaand programma door een bepaalde user..

P.S., dit is wel een Access vraag, want ik heb dit nodig in mijn Access applatie...

Bij voorbaat dank voor een reactie...

Gr.

Ed
 
1 ding lijk ik maar niet te kunnen begrijpen:
Heb je een terminal-server client, vindt alles plaats in de terminal-server client-omgeving (met uitzondering, soms, van printen op printers die aan de lokale client-pc zijn aangesloten).

Dan heb jij een access applicatie die, zover ik kan lezen lokaal op de client staat geinstalleerd, en vandaaruit gedraaid wordt.

Nu lijk jij te denken dat je door access lokaal te draaien ook maar enige invloed danwel communicatie kunt uitoefenen op een gestarte Outlook in de terminal-server omgeving?

Als je al wat wilt doen met een Outlook in Terminal-Server omgeving, dan zal je access applicatie ook op de Terminal Server aan de relevante gebruikers beschikbaar moeten worden gesteld. Dan lijkt me dat je probleem ook opgelost is, omdat, zoals je zelf schrijft, lokaal getest met een lokale Outlook het wél werkt.

Tijs.
 
Laatst bewerkt:
Cruciale vraag is dus: waar draait de access toepassing, op de client of op de server?
Als de access toepassing op de client draait kun je de current user simpel opvragen door middel van de functie currentuser(). Deze functie retourneert de huidige access user.
Als je de windows user wil hebben dan kun je de volgende code gebruiken:

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSUserName() As String
' Returns the network login name
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If ( lngX > 0 ) Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = vbNullString
End If
End Function
 
Allereerst bedankt voor jullie snelle reacties.

Access applicatie draait op de terminal server. Ik zal zeggen waar het verder om gaat.
Ik heb e.e.a. gebouwd, zodat er automatisch bij afwijking/overschrijding etc etc. van iets automatisch een email naar een andere medewerker wordt verzonden. So far so good. Degene die NIET op de terminal Server werkt, maar via een gewone netwerkverbinding met deze access applicatie verbinding heeft (dus op eigen werkplek access heeft draaien) , heeft hier geen probleem mee. Op het moment dat deze user geen outlook open heeft staan, open ik d.m.v. een script outlook, verzend de boel en sluit outlook weer af. Dat gaat prima. Maar werk je via de terminal server met de access applicatie, dan herkent hij dat outlook open staat, zonder dat je het feitelijk hebt open staan(dat komt omdat outlook wellicht door een andere user wordt aangesproken op deze terminal server.) Uiteraard heb je dit probleem dus niet op je eigen werktstation. Daat heb je hem open staan of niet.

Waar gaat het nu fout.....
Zodra je dus outlook niet open hebt staan op de terminal server, er hij herkent wel dat e.e.a. open staat, wil het script e.e.a. verzenden (en dat gaat natuurlijk niet, want je eigen outlook staat dus niet open). E.e.a. loopt dus vast op dat moment.

Ik hoop dat dit iets duidelijker is... en hoop op een antwoord.

Gr.
Ed
 
Ik vind het verbazingwekkend dat je script op de terminal-server niet draait. Zoals eerder gezegd, is het gewoon een 'pc-op-afstand' die je al terminal-server client beschikbaar hebt, en dus zouden (in theorie dan toch minstens) alle zaken die lokaal worden gedraaid ook zonder teveel problemen 'geporteerd' moeten kunnnen worden naar de Terminal-server omgeving.

Misschien heb ik iets voor je: Het is mij nooit gelukt om Outlook 2x tegelijkertijd opgestart te hebben (anders gezegd: Bij de tweede keer opstarten wordt gewoon de reeds geopende Outlook geopend, er komt geen 2de Outlook 'naast'). Was het al opgestart, dan lijkt mij dus dat dat geen probleem oplevert. Dus misschien zou je het dus geheel kunnen stellen zonder de check of Outlook al geopend stond, en gewoon aangeven dat Outlook geopend moet worden, onafhankelijk of het nou wel of niet reeds het geval was.

Misschien heb je hier wat aan?

Tijs.
 
het kan zo simpel zijn.

het probleem wordt moeilijker voorgesteld dan het is. Code op de terminalserver werkt gewoon hetzelfde als op een lokale werkplek, niet meer en niet minder.

Start gewoon outlook op in je script, kijk of een foutmelding ontstaat indien outlook al geopend is en vang die fout af en dan een resume next.

anders via smtp mailen. is ook genoeg over te vinden.

lukt dit niet zou je ook meldingen in een database kunnen zetten, en deze dan verplicht tonen aan gebruikers die met je access werken, maar dan moet men wel zo willen / kunnen werken. Hangt af van de urgentie van je berichten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan