Toon posts:

Info over actieve venster afvangen en doorsturen mogelijk?

Pagina: 1
Acties:
  • 606 views

  • Reveller
  • Registratie: augustus 2002
  • Laatst online: 07-05-2020
Na mijn bedrijfskunde opleiding werk ik nu als account manager bij een financieel dienstverlener. Omdat ik als hobby graag wat (web!)programmeer, denkt iedereen dat je alles van computers weet. Vandaar dat ik het volgende op mijn bordje heb gekregen.
  • Onze (kleine) IT afdeling wordt dagelijks platgebeld met de meest triviale vragen. Iemand zit bijvoorbeeld in Outlook en weet niet hoe je een afspraak kunt verzetten; iemand zit in Word en het lukt niet om een plaatje in te voegen. Wat dan ook.
  • Om niet 10 keer per dag hetzelfde te hoeven uitleggen, heeft de IT afdeling een inventarisatie gemaakt van de meest gestelde vragen, en daar folders van gedrukt. Dat hielp alleen niet; de folders raakten al snel zoek. Toen maar webcastjes gemaakt van de meest voorkomende problemen en oplossingen, maar ondanks een zoekfunctie op tags wordt er nog steeds liever gebeld. Dus een volgend idee proberen dan maar.
  • Dat idee is om een "veel voorkomende fouten en oplossingen" database te maken en deze te koppelen aan het intranet. Alleen is wel gebleken dat het essentieel is om zo weinig mogelijk stappen te verwachten van de gebruikers. Het idee is dus om een "panic button" in de taakbalk (waarschijnlijk system tray) te zetten, waar gebruikers op kunnen klikken als er iets fout gaat.
  • Het blijkt dat ruim 90% van de gebruikers meteen belt alsze een vraag hebben - en in evenzoveel gevallen gaat de vraag over het actieve scherm. Vandaar het idee om de "panic button" in de systray het volgende te laten doen:
    • als er op het icoontje wordt geklikt, verzamelt het programmaatje zoveel mogelijk info over de huidige desktop, in ieder geval (1) welk venster is actief? (2) heeft het venster een foutmelding gegeven en zo ja, welke?
    • deze info wordt via een querystring gestopt. Een browser wordt geopend met daarin de vraag-en antwoord database. Door middel van de querystring, kan de eerste stap (of: stappen) van de drilldown al worden overgeslagen, bijvoorbeeld: http://intranet/kennisdb?active=outlook&error=connection_error. Er kan dan meteen gevraagd worden: "Heeft u een probleem met het ophalen van email?". Nou ja, je begrijpt het idee :)
Ik heb een redelijk idee van hoe ik het webbased gedeelte zou moeten maken. Je kunt zover gaan als je wilt natuurlijk; statistieken bijhouden van meest voorkomende problemen / error codes uit de querystring, zodat je die "top 10 problemen met Word" op kunt aanpassen, en degelijke.

Maar ik weet eigenlijk niets van lokale applicaties programmeren. Vandaar mijn vraag: welke informatie kun je allemaal afvangen over het actieve programma venster? Zijn er standaard error codes in de Windows API? Op welke manier is zo'n systray app het snelst te implementeren? Misschien bestaat het al?

Graag wat tips zodat ik weet in welke richting ik moet zoeken om dat systray appje te maken! :)

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Reveller
  • Registratie: augustus 2002
  • Laatst online: 07-05-2020
sopsop schreef op woensdag 29 september 2010 @ 12:30:
Welke taal wil je gebruiken, dat lijkt me een eerste stap die je moet nemen. Zodra je die keuze hebt gemaakt kun je ook veel gerichter (zelf) zoeken.

Qua windows api kun je hier kijken (indien je c# gaat gebruiken): http://pinvoke.net/default.aspx/user32.EnumDesktopWindows
Het is voornamelijk een proof-of-concept. Ik heb geen ervaring met programmeertalen, slechts scripttalen (php, vbscript, javascript). Ik zoek de meest eenvoudige manier om dit snel te realiseren: quick-and-dirty. Is Visual Basic dan misschien een optie?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Reveller
  • Registratie: augustus 2002
  • Laatst online: 07-05-2020
leuk_he schreef op woensdag 29 september 2010 @ 13:14:
[...]
-Je bedrijf heeft gewoon een helpdeks nodig, iemand die de telefoon opneemt en de triviaale vragen afhandeld. en enkel de moeilijkere vragen doorzet naar de experts
De helpdesk blijft gewoon bestaan; ze zoeken alleen naar een oplossing om niet 10x per dag hetzelfde triviale vraagje te beantwoorden. Soms staan duur betaalde juristen een kwartier in de wacht om een helpdesker te spreken te krijgen (iemand extra aannemen is lastig - piek en daltijden :) ). Als zo iemand zichzelf zou kunnen helpen in de helft van die tijd, dan is dat 10 minuten x 200 euro per uur gewonnen. En dat vele malen per dag.
Dat is overigens tamelijk low level programmeren, Simpeler lijkt me een remote support te installeren waarmee je de desktop kunt overnemn.. maar dat was niet je vraag.
Desktop overnemen is ook al geimplementeerd :) Nogmaals, de hoop is dat mensen zichzelf leren behelpen (met onderaan de helptekst zoiets als "als het nu nog niet werkt, kun je de helpdesk bellen".

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Reveller
  • Registratie: augustus 2002
  • Laatst online: 07-05-2020
Wolfboy schreef op woensdag 29 september 2010 @ 13:10:
Je zou zoiets vrij makkelijk via AutoIt kunnen maken: http://www.autoitscript.com/autoit3/index.shtml

Dat vereist weinig programmeerervaring en heb je zo in elkaar gezet :)
Thanks! Ondanks dat er vele terechte commentaren worden geleverd, ben ik toch een beetje aan het prutsen geslagen. Ik heb alleen een probleem waar ik niet uitkom:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Opt("TrayMenuMode",1)   ; Hide default tray menu items

$aboutitem = TrayCreateItem("About")
$infoitem  = TrayCreateItem("Info")
$exititem  = TrayCreateItem("Exit")

TraySetIcon("Shell32.dll",-87)
TraySetState()

While 1
  $msg = TrayGetMsg()
  Select
    Case $msg = 0
      ContinueLoop
    Case $msg = $aboutitem
      Msgbox(64, "About", "Dennis' Cool Q&A app!")
  Case $msg = $infoitem
      MsgBox(64, "POPUP", "HELLO WORLD!")
    Case $msg = $exititem
      ExitLoop
  EndSelect
WEnd

Exit

Ik wil dat:
  • als je links klikt op het system tray icoontje, de "Info" popup "HELLO WORLD" verschijnt
  • als je rechts klikt het menuutje "about" en "exit" verschijnt
In de huidige situatie verschijnt er een menuutje ("about", "Info", "exit") bij zowel links als rechts klikken. In de documentatie vind ik niet hoe je dit kunt veranderen naar de situatie zoals ik hem wil.

Is er toevallig iemand bekend met AutoIt die mij kan helpen?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Reveller
  • Registratie: augustus 2002
  • Laatst online: 07-05-2020
BertS schreef op donderdag 30 september 2010 @ 08:50:
Ook met een dergelijke systray-button gaan mensen nog steeds bellen. Dan hoeven ze namelijk niet:
  1. een heel verhaal te lezen;
  2. dit verhaal op hun actuele probleem toe te passen;
Dat wordt ook wel onderkend, maar bekijk het ook eens andersom. Het wordt mensen zo makkelijk mogelijk gemaakt om zelf hun probleem op te lossen. Het blijkt (hier zijn statistieken van) dat de ene afdeling zelfstandiger opereert dan een andere. Ondanks eenzelfde IT gebruik en evenveel werknemers, zit er een enorm verschil in het aantal telefoontjes (plm. 500 verschil per maand). Het idee is om het aantal telefoontjes per afdeling te limiteren (bv. op 1000) en dat elk telefoontje daarboven intern wordt doorberekend. Je hebt dus zelf de keus (als afdelingsmanager) om te proberen je mensen meer 'aan de knop' te krijgen of om aan het einde van de maand verantwoording te kunnen afleggen. En voordat er een hoop commentaar komt - het is slechts 1 van de ideeen die rondcirkelen nu, en ik weet zelf ook dat dat niet ideaal is (want eigenlijk straf je af ipv belonen). In een werkgroep echter, waar ik lid van ben, blijkt dat er bijna geen probleem is dat geen 'helpdesk problematiek' kent :)

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Reveller
  • Registratie: augustus 2002
  • Laatst online: 07-05-2020
...om de discussie toch weer wat terug te sturen naar het programmaatje zelf, ik heb nu dit in AutoIt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <Constants.au3>

Opt("TrayMenuMode",1) ; Hide default tray menu items
TraySetIcon("Shell32.dll",-87)
TraySetClick(8) ; Only show the menu when right clicking
$aboutitem = TrayCreateItem("About")
$infoitem  = TrayCreateItem("Info")
$exititem  = TrayCreateItem("Exit")

While 1
 Switch TrayGetMsg() ;s witch seems nicer in this case
 Case 0
     ContinueLoop
    Case $TRAY_EVENT_PRIMARYDOWN ; reaction to left clicking
     Msgbox(64,"",WinActive("title"))
 Case $aboutitem
     TrayItemSetState($aboutitem,$TRAY_UNCHECKED) ; stop the automated (un)checking
     Msgbox(64, "About", "Dennis' Cool Q&A app!")
 Case $infoitem
     TrayItemSetState($infoitem,$TRAY_UNCHECKED) ; stop the automated (un)checking
     MsgBox(64, "POPUP", "HELLO WORLD!")
 Case $exititem
     ExitLoop
 EndSwitch
WEnd
Exit

Wat ik alleen niet snap is hoe ik kan uitlezen wat het actieve window is (en daarvan de properties uitlezen). Ik verwachtte dat WinActive("title") de titel van de actieve window zou retourneren, maar het retourneert "0". Wie kan mij in de goede richting sturen?

(Wat betreft alle argumenten tegen dit programmaatje ne dat het toch niet gaat werken, daar kan ik het wel mee eens zijn. Maar het lijkt mij dat ik mijn baas het makkelijkse overtuig door een proof-of-concept te laten zien, en dan uitleg dat het heel moeilijk gaat zijn om van alle programma's te error codes te inventariseren (En hoe die af te vangen))

[Voor 13% gewijzigd door Reveller op 30-09-2010 14:26]

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."

Pagina: 1

Dit topic is gesloten.



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee