Zuarbeit zu Twilight/ Displayhelligkeit ändern

  • Hallo bill_gehts,
    ich habe einen MDA Compact2 und wollte auch die Helligkeit in einem Programm dimmen.
    Bei nachforschen warum es nicht funktioniert bin ich auf diesen Thread gestossen.
    Die Backlight.exe von Dir läuft bei mir.
    Werte wären 1-4.
    Bin nicht so der IDA Fachmann, aber mein Gerät scheint die Events "BackLightNotifyEvent" und "BackLightChangeEvent" zu erwarten.
    Danach kommt eine DeviceIOControl, allerding weiss ich nicht was ich da dann als Parameter nehmen muss.
    Da es mit Deinem Programm funktioniert würde ich gerne wissen ob Du mir sagen könntest was da gemacht werden muss.
    Danke schon mal, Patrick


    mda compact(htc charmer)/ja/?/1-4

    Einmal editiert, zuletzt von bateman ()

  • Hi bateman ...
    HANDLE hEvent;


    // Signal the driver that the backlight settings
    // have changed so it reloads them from the registry
    hEvent = CreateEvent(NULL, FALSE, FALSE, _T("BackLightChangeEvent"));
    if (hEvent != NULL) {
    SetEvent(hEvent);
    CloseHandle(hEvent);
    }


    hEvent = CreateEvent(NULL, FALSE, FALSE, _T("BackLightNotifyEvent"));
    if (hEvent != NULL) {
    SetEvent(hEvent);
    CloseHandle(hEvent);
    }


    und nun noch :


    HANDLE hBKL=CreateFile(TEXT("BKL1:"),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
    if(hBKL != INVALID_HANDLE_VALUE ) {
    DeviceIoControl(hBKL, .....


    CloseHandle(hBKL);
    }


    Die Werte die du bei DeviceIoControl übergibst sind je Modell verschieden ...
    Der Entwickler von HTC (Peter Wei) hat sich bei jedem neuen Modell/Projekt neue Nettigkeiten einfallen lassen.


    Wenn Du eh' das DeviceIOControl schon siehst ... schau mal auf den Stack die Werte an ... ;D


    Grüße
    Bill

  • Danke für die Antwort,
    aber leider komme ich genau an der Stelle nicht weiter.
    Den Code bisher hatte ich schon, nur jetzt kommt ja das schwierige, und zwar das rausfinden der DeviceIOControl Parameter.
    Und irgendwie komme ich mit IDA Pro nicht klar.
    Ich klicke da auf das DeviceIOControl in der Functionliste, setze einen Breakpoint darauf,
    aber aus den Werten werde ich einfach nicht schlau. Evt. funktioniert das mit der Demoversion auch einfach nicht. Vermutlich liegt es aber eher an mir...

  • Kommt das annährend mit deinem Code hin?
    //1. DeviceIoControl
    DWORD dwControlCode = 2;
    DWORD dwInBuff = 0x2202F8F0;
    DWORD dwInBuffLen = sizeof(DWORD);
    DWORD dwOutBuff = NULL;
    DWORD dwOutBuffLen = sizeof(DWORD);
    DWORD dwReturned = sizeof(DWORD);
    LPOVERLAPPED lpOverlapped = NULL;


    BOOL boRet = DeviceIoControl(hBKL,dwControlCode,&dwInBuff,dwInBuffLen,&dwOutBuff,dwOutBuffLen,&dwReturned,lpOverlapped);
    DWORD dwErr = GetLastError();


    //2. DeviceIoControl
    dwControlCode = 7;
    dwInBuff = 0x2202F8F0;
    dwInBuffLen = sizeof(DWORD);
    dwOutBuff = NULL;
    dwOutBuffLen = sizeof(DWORD);
    dwReturned = sizeof(DWORD);
    lpOverlapped = NULL;
    boRet = DeviceIoControl(hBKL,dwControlCode,&dwInBuff,dwInBuffLen,&dwOutBuff,dwOutBuffLen,&dwReturned,lpOverlapped);
    dwErr = GetLastError();
    //3. DeviceIoControl
    dwControlCode = 8;
    dwInBuff = 0x2202F8F0;
    dwInBuffLen = sizeof(DWORD);
    dwOutBuff = NULL;
    dwOutBuffLen = sizeof(DWORD);
    dwReturned = sizeof(DWORD);
    lpOverlapped = NULL;
    boRet = DeviceIoControl(hBKL,dwControlCode,&dwInBuff,dwInBuffLen,&dwOutBuff,dwOutBuffLen,&dwReturned,lpOverlapped);
    dwErr = GetLastError();
    CloseHandle(hBKL);


    Du machst das auch 2 mal hintereinander, aber die Werte scheinen sich nicht zu ändern.
    Ich kann leider nicht wirklich mir IDA debuggen, da mein Compact2 keinen unterstützden ARM Prozessor hat. Kannst Du mir deinen Code evt zukommen lassen?

  • Hi,


    leider funktioniert Backlight mit dem ASUS MyPal A639 (WM6) nicht. Das Programm stuerzt ab, sobald ich den Regler bewege.


    Die Registrykeys sind bei mir leider auch nicht vorhanden. Ebensowenig wie Backlight.exe / Backlight.cpl, obwohl es einen entsprechenden Eintrag in der Systemsteuerung gibt.


    Im Windowsverzeichnis gibt es eine BacklightDrv.dll, die sich aber leider nicht kopieren laesst.


    Seit dem Upgrade von WM5 auf WM6 kann ich die Helligkeit auch nicht mehr mit MortScript aendern. ?(


    Trotzdem vielen Dank fuer Deine Zuarbeit zu Twilight.


    Cubbi