mci1943
Goto Top

Windowsordner über QR Code öffnen

Meine Problem ist folgendes
Ich möchte mit einem Barcode Handscanner, welcher mit dem PC über ein USB Dongle kommuniziert, QR Codes scannen, welche dann einen Windowsordner im Netzwerk öffnen.

Hintergrund ist der, dass die Fertigung Auftragszettel erhält mit einer Nummer und den Kundennamen.
Unter dieser Nummer + Kundennamen befindet sich in Netzwerk ein Auftragsordner mit allen relevanten Informationen.
Z.B. D:\4711_Kundename GmbH

Die Kollegen sollen jetzt schnell und einfach diesen Ordner finden können.
Daher war meine Idee den Ordnerpfad plus Befehl in einem QR Code zu hinterlegen, der dann nur noch gescannt wird und sich dann öffnet.

Die generelle Funktion habe ich hinbekommen. Mein Problem ist, dass man die Eingabezeile im Browser oder Windows Explorer, dafür händisch markieren muss, damit der Scanner die URL dort reinschreiben kann.
Der Scanner übermittelt als Präfix ein "Enter", so dass die Datei dann entsprechend geöffnet wird.
Ich suche nun also eine Möglichkeit für Scannen und öffnen des Explorers ohne das ich separat in die Eingabezeile des Explorers klicken muss

Content-Key: 22274007066

Url: https://administrator.de/contentid/22274007066

Printed on: May 13, 2024 at 23:05 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Apr 28, 2024 at 19:17:45 (UTC)
Goto Top
Moin,

Lass doch einfach ein (Power)shell-Skript in schleife laufen, das die Eingabe des Pfades entgegennimmt und dann das Fenster dazu öffnet.

Diemustest dafür nur den Scanner exklusivut dem Skript belegen.

lks
Member: mci1943
mci1943 Apr 28, 2024 at 19:49:31 (UTC)
Goto Top
Ich hab damit leider überhaupt keine Erfahrung.
Wie und was muss ich dafür machen?
Mitglied: 12764050420
12764050420 Apr 28, 2024 updated at 20:44:19 (UTC)
Goto Top
Wie und was muss ich dafür machen?
while($true){
    $ordner = Read-Host "Ordner-Code scannen"  
    Invoke-Item $ordner
}
Man könnte natürlich auch eine eigene Anwendung schreiben die auf die Eingaben nur dieser Scanner hört und die QR Codes mit Protokoll-Prexfix gestaltet und im System dieses Protokoll registriert und mit dem Explorer ausführt.

Welche Scanner nutzt ihr denn? Manche bringen so etwas in der Art bereits mit.

Gruß schrick
Member: mci1943
mci1943 Apr 29, 2024 at 04:28:37 (UTC)
Goto Top
Den Code lege ich hinter den Qr Code?
Wie gesagt, ich habe nur die Idee und keine Erfahrung wie ich sowas umsetzen kann.

Der Scanner ist nichts besonderes von Amazon, da kann ich aber was neues bestellen (wenn ich weiß was genau 😉)
Member: NordicMike
NordicMike Apr 29, 2024 updated at 05:09:51 (UTC)
Goto Top
Jeder Barcodescanner oder QR Code Scanner emuliert eine Tastatur. Die gescannten Daten werden als Tastendruck immer zu dem Fenster geschickt, der im Fokus (im Vordergrund) ist.

Du kannst zwar z.B. mit dem Programm Autohotkey die Tastatureingaben abfangen und nach belieben dann Explorer oder Browser damit füttern, aber das erfordert eine intensive Programmierung, du musst dich also tief in das Programm einarbeiten.

Es geht darum, dass das Programm erkennen soll ab wann der QR Code beginnt (Prefix) und bis wohin dieser geht (Suffix bzw CR) und den Rest verwerfen / ignorieren soll, immerhin will der Benutzer auch andere Sachen über den Tastaturkanal tippen können.
Member: em-pie
em-pie Apr 29, 2024 at 05:08:38 (UTC)
Goto Top
Moin,

Was sind das denn für Dokumente?
PDFs? Bilder? Und müssen die Dateien bearbeitet oder nur betrachtet werden?
Vielleicht reicht es ja, die mittels eines kleinen Webservers aufzurufen. Im QR-Code dann die URL ablegen und gut.
Oder mal probieren, was Windows/derScanner macht, wenn im QR-Code steht:
file://c:/Shares/Projects/Project4711
Member: beck2oldschool
beck2oldschool Apr 29, 2024 at 09:09:07 (UTC)
Goto Top
Zitat von @em-pie:

Oder mal probieren, was Windows/derScanner macht, wenn im QR-Code steht:
file://c:/Shares/Projects/Project4711

Das wäre auch mein erster Ansatz gewesen. Wenn ich das über Start / Ausführen eingebe, geht bei mir der Explorer auf und ich stehe genau in dem Ordner. Auch wenn es ein Netzlaufwerk ist.
Member: mci1943
mci1943 Apr 29, 2024 at 11:59:05 (UTC)
Goto Top
Es soll nur der Ordner geöffnet werden, daher wird file ja vermutlich nicht funktionieren
Member: beck2oldschool
beck2oldschool Apr 29, 2024 at 12:04:36 (UTC)
Goto Top
Also wenn ich bei mir file://c:/ordner1/ordner2 eingebe, geht Ordner 2 auf
Member: NordicMike
NordicMike Apr 29, 2024 at 12:14:28 (UTC)
Goto Top
Also wenn ich bei mir file://c:/ordner1/ordner2 eingebe, geht Ordner 2 auf
Aber nur, wenn dein Curser vor dem Scannen im Datei Explorer in einer leeren Addresszeile steht
Member: beck2oldschool
beck2oldschool Apr 29, 2024 at 12:34:53 (UTC)
Goto Top
Mh, ja das stimmt schon.
Aber irgendwie muss ich doch irgendwo immer etwas eingeben. Woher soll der Computer denn wissen was ich will? Da ein Scanner nichts anderes als eine Tastatur ist, müssen die Eingaben doch irgendwohin!?
Ich hab leider keinen Sacnner da. Aber was passiert denn, wenn man folgendes im QR Code hat und dann per Windows scannt?
file://localhost/c:/WINDOWS
bzw
file:///c:/WINDOWS
Über die URI müsste er doch schnallen, dass der Explorer zu öffnen ist, oder nicht? Bei z.B. mailto: funktioniert es doch auch - glaub ich. Doof halt, dass ich keinen Scanner da habe
Mitglied: 12764050420
12764050420 Apr 29, 2024 updated at 12:42:18 (UTC)
Goto Top
Über die URI müsste er doch schnallen, dass der Explorer zu öffnen ist, oder nicht? Bei z.B. mailto: funktioniert es doch auch
Das Ding ist nur ne Tastatur, nicht mehr und nicht weniger.
Wenn du auf dem Desktop ohne Eingabefeld auf den Tasten rum hämmerst öffnet sich ja auch kein Explorer. Du musst schon den Cursor in einer expliziten Anwendung platzieren damit damit was passieren kann.
Obiges Skript macht das. Einfach mal starten und dann den QR-Code scannen, schon öffnet sich der Explorer mit dem Ordner.
Wenn du es ohne explizites Fenster willst dann muss man sich ein Keylogger schreiben der die Tastenfolge abfängt und bei Erkennung des Prefixes "file;//" das Öffnen des Explorers auslöst! Steht doch schon oben.
Member: beck2oldschool
beck2oldschool Apr 29, 2024 at 12:47:59 (UTC)
Goto Top
Yo, so oder so ähnlich hab ich es geschrieben. Ich glaube auch nicht, dass da was passiert ohne ein entsprechendes Eingabefeld vorher anzuklicken.
Allerdings, bei meinem Android Smartphone geht auch der Browser auf, wenn ich nen QR Code mit einer URL scanne. Da "stehe" ich auch in keinem Eingabefeld
Mitglied: 12764050420
12764050420 Apr 29, 2024 updated at 12:52:48 (UTC)
Goto Top
Zitat von @beck2oldschool:
Allerdings, bei meinem Android Smartphone geht auch der Browser auf, wenn ich nen QR Code mit einer URL scanne. Da "stehe" ich auch in keinem Eingabefeld
Android ist kein Windows, da ist ein meilenweiter Unterschied und nicht vergleichbar, dort erledigen das auch Systemdienste, ohne Programm keine Funktion!
Member: NordicMike
NordicMike Apr 29, 2024 at 12:53:45 (UTC)
Goto Top
Das meinte er mit:

Mein Problem ist, dass man die Eingabezeile im Browser oder Windows Explorer, dafür händisch markieren muss, damit der Scanner die URL dort reinschreiben kann.

und dazu war meine Meinung: siehe oben meinen Beitrag mit Autohotkey.
Member: beck2oldschool
beck2oldschool Apr 29, 2024 at 12:56:31 (UTC)
Goto Top
Und wir wissen immer noch nicht wie er "die generelle Funktion" hinbekommen hat. Und es hat auch noch keiner ausprobiert, ob es nicht vielleicht doch geht. Oder?
Member: em-pie
em-pie Apr 29, 2024 at 12:57:26 (UTC)
Goto Top
So, gerade mal folgendes getestet:
  • QR-Code vom Typ "URL" mit dem Inhalt file://c:/users generiert
  • QR-Code mit der HandyCam (iPhone) gelesen
=> kein gültiger Inhalt gefunden/ erkannt


Folgendes wäre als Workaround denkbar
  • Dokumente liegen alle auf \\myServer\Projects$\ und darunter immer die Projektnummern Project_4711, Project_4712, usw.
  • kleinen Webserver aufsetzen, der Inhalte der Ordners \\myServer\Projects$\ auflisten kann (zur not den Pfad im Webserver mounten, sofern der Webserver nicht auf einem Windows betrieben wird). Dazu insgesamt mal die Funktion scandir() innerhalb von PHP anschauen.
  • QR-Codes (dynamisch) generieren lassen mit http://myWebserver/Project_4711

Fertig.
Member: Lochkartenstanzer
Lochkartenstanzer Apr 29, 2024 updated at 12:59:34 (UTC)
Goto Top
Zitat von @em-pie:

So, gerade mal folgendes getestet:
  • QR-Code vom Typ "URL" mit dem Inhalt file://c:/users generiert
  • QR-Code mit der HandyCam (iPhone) gelesen
=> kein gültiger Inhalt gefunden/ erkannt

Kein Wunder: Dein iPhone hat auch weder C-Laufwerk. noch ein User-verzeichnis das so heißt.

lks
Mitglied: 12764050420
12764050420 Apr 29, 2024 updated at 14:15:20 (UTC)
Goto Top
Mal schnell was gebastelt. Folgenden Powershell-Schnippsel ausführen und dann mit einer beliebigen Tastatur oder deinem Scanner einen Pfad in folgendem Format eintippen und am Ende "Enter" drücken, wo du das machst oder wo der Eingabe-Fokus liegt ist egal
file://\\server\freigabe\ordner
Schon öffnet sich der Explorer mit dem Pfad. Ist natürlich nur ne Demo, im Normalfall macht man daraus ne Anwendung die nur den Scanner selbst berücksichtigt und nicht jede Tastatur.
function KeyLogger {
    Add-Type -Memberdefinition @'  
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] public static extern short GetAsyncKeyState(int virtualKeyCode);   
[DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int GetKeyboardState(byte[] keystate);  
[DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int MapVirtualKey(uint uCode, int uMapType);  
[DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);  
'@ -Name Win32 -Namespace API  
    try{
        Write-Host 'Waiting for new folders ...' -F Yellow  
        $sb = [System.Text.StringBuilder]::New()
        $mychar = New-Object -TypeName System.Text.StringBuilder
        while ($true) {
            Start-Sleep -Milliseconds 20
            for ($ascii = 9; $ascii -le 254; $ascii++) {
                $state = [API.Win32]::GetAsyncKeyState($ascii)
                # is key down?
                if ($state -eq -32767) {
                    [void][console]::CapsLock
                    $virtualKey = [API.Win32]::MapVirtualKey($ascii, 3)
                    $kbstate = New-Object Byte[] 256
                    $checkkbstate = [API.Win32]::GetKeyboardState($kbstate)
                    [void]$mychar.Clear()
                    if ([API.Win32]::ToUnicode($ascii, $virtualKey, $kbstate, $mychar, $mychar.Capacity, 0)) {
                        [void]$sb.Append($mychar)
                    }
                    if ($sb.toString() -match 'file://([^\r\n]+)[\r\n]+'){  
                        if (Test-Path $matches[1]){
                            write-host "Opening path: $($matches[1])" -F Green  
                            Invoke-Item $matches[1]
                        }
                        [void]$sb.Clear()
                    }
                }
            }
        }
    }catch{
        write-host $_.Exception.Message -F Red
    }
}
KeyLogger