Πάρτε το ρεύμα καταγράφεται στο λειτουργικό σύστημα του χρήστη με το Adobe Air

ψήφοι
16

Χρειάζομαι το όνομα του τρέχοντος συνδεδεμένος χρήστης στην αίτησή μου Air / Flex. Η αίτηση θα πρέπει να χρησιμοποιούνται μόνο σε υπολογιστές με Windows. Νομίζω ότι θα μπορούσε να επιτευχθεί αυτό με regexing τον κατάλογο των χρηστών, αλλά είμαι ανοιχτός σε άλλους τρόπους.

Δημοσιεύθηκε 04/08/2008 στις 17:05
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
10

Υπάρχουν μερικά μικρά καθαρισμούς που μπορείτε να κάνετε ...

package
{
    import flash.filesystem.File;

    public class UserUtil
    {
        public static function get currentOSUser():String
        {
            var userDir:String = File.userDirectory.nativePath;
            var userName:String = userDir.substr(userDir.lastIndexOf(File.separator) + 1);
            return userName;
        }
    }
}

Όπως πρότεινε ο Kevin, χρησιμοποιούν File.separatorγια να κάνουν το διαχωρισμό κατάλογο cross-platform (μόνο δοκιμαστεί σε Windows και Mac OS X).

Δεν χρειάζεται να χρησιμοποιήσετε resolvePath("")αν ψάχνετε για ένα παιδί.

Επίσης, καθιστώντας τη λειτουργία μιας σωστής κτήτορας επιτρέπει δεσμευτική χωρίς καμία περαιτέρω εργασία.

Στο παραπάνω παράδειγμα το έβαλα σε μια UserUtilκατηγορία, τώρα μπορώ να δεσμεύονται με UserUtil.currentOSUser, π.χ.:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Label text="{UserUtil.currentOSUser}"/> 
</mx:WindowedApplication>
Απαντήθηκε 26/08/2008 στις 14:32
πηγή χρήστη

ψήφοι
10

Επίσης, θα ήθελα να προσπαθήσω:

File.userDirectory.name

Αλλά δεν έχω εγκαταστήσει αέρα οπότε δεν μπορώ πραγματικά να δοκιμάσετε αυτό ...

Απαντήθηκε 04/08/2008 στις 17:39
πηγή χρήστη

ψήφοι
5

Αυτή δεν είναι η ωραιότερη προσέγγιση, αλλά αν ξέρετε εφαρμογή AIR σας θα τρέξει μόνο σε περιβάλλον Windows λειτουργεί αρκετά καλά:

public var username:String;

public function getCurrentOSUser():void
{       
   var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();  
   var file:File = new File("C:/WINDOWS/system32/whoami.exe");
   nativeProcessStartupInfo.executable = file;

   process = new NativeProcess();       
   process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
   process.start(nativeProcessStartupInfo);
}

public function onOutputData(event:ProgressEvent):void
{           
   var output:String = process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable);
   this.username = output.split('\\')[1];
   trace("Got username: ", this.username);
}
Απαντήθηκε 17/02/2011 στις 04:48
πηγή χρήστη

ψήφοι
2

Εδώ είναι μια λύση που να λειτουργεί σε XP / Vista, αλλά είναι σίγουρα επεκτάσιμη σε OSX, Linux, θα ήθελα ακόμα να ενδιαφέρονται για έναν άλλο τρόπο.

public static function GetCurrentOSUser():String{
    // XP & Vista only.
    var userDirectory:String = File.userDirectory.resolvePath("").nativePath;
    var startIndex:Number = userDirectory.lastIndexOf("\\") + 1
    var stopIndex:Number = userDirectory.length;
    var user = userDirectory.substring(startIndex, stopIndex);

    return user;
}
Απαντήθηκε 04/08/2008 στις 17:19
πηγή χρήστη

ψήφοι
-1

Ενημέρωση τρόπο αργότερα: υπάρχει πράγματι μια ενσωματωμένη λειτουργία για να πάρει τον τρέχοντα χρήστη. Νομίζω ότι είναι στο nativeApplication.

Απαντήθηκε 06/01/2009 στις 18:26
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more