[.Net CF 1]My Computer en Recycle bin verwijderen

Pagina: 1
Acties:

  • Paul
  • Registratie: September 2000
  • Laatst online: 20:05
Ik zit half te twijfelen of dit niet in PDA's, Smartphones, GSM's en GPS-navigatie beter af zou zijn, maar ik denk dat het hier wel goed staat :)

Voor mijn werk schrijf ik applicaties (of eigenlijk: maar 1 :P) voor op PDA's. Leuke apparaaties, barcodescanners geintegreerd, IP## behuizingen die tegen flinke stoten kan etc. Klein nadeel, door de lange ontwikkeltijd van dat soort ietwat specialistische speeltjes draaien ze allemaal op Windows CE .Net 4.2, waardoor ze dus bij de eerste versie van het .Net Compact Framework zijn blijven steken.

Dan het probleem: We hebben voor een bepaalde groep gebruikers niet graag dat ze gaan grasduinen in de PDA, al was het maar om het gebruik van internet en dus het dure GPRS-verkeer binnen de perken te houden. Het plan was dus, om alle icoontjes van de desktop te verwijderen en tevens het startmenu leeg te maken. Omdat desbetreffende PDA's alles na een hard-reset (en sommige dingen zlefs bij een soft-reset al) weer ongedaan maakt, moet dat dus vanuit het programma, bijvoorbeeld zodra het programma opgestart wordt.

We zijn al zover dat we via de registry (door middel van OpenNetCF) de IE-settings AutoDial en Online/Offline aan kunnen passen omdat dat stuk WTF dat onze FTP-connecties opbouwt (het vrij bekende SapphireFTP, of zelfs gewoon de TCP/IP stack van de PDA zelf) daar heel goed naar luisterd en met de meest vage foutcodes komt als die fout staan (lees: AutoDial aan en/of Offline-mode aan) terwijl deze specifieke PDA (Mobile Compia M3) die dingen regelmatig automagisch verkeerd zet 8)7. De vorige specifieke PDA waar ik regelmatig op aan het testen was, de Unitech PA960, kon ik bij het tegenkomen van een bug of andere vage meuk beter eerst softresetten, in 90% van de gevallen werkte het dan (reproduceerbaar) wel, die andere 10% waren wel bugs :P

Ook lukt het om in de registry de goede keys te verwijderen (en desnoods terugzetten) waardoor na een softreset de My Computer en Recycle Bin weg zijn. Probleem hierbij is een beetje de soft reset. Men wil namelijk graag afhankelijk van wie er het laatste in onze applicatie is ingelogd, wel of geen volledige toegang tot de PDA zelf geven.
Ik heb ze al uitgelegd dat de _volgende_ inlogger dan voordat hij zich inlogt, ongeacht zijn autorisatie, toch overal bij kan, maar ja :P


Probleem is dus: Hoe krijg ik die icoontjes weg _zonder_ soft reset? Idem eigenlijk voor de achtergrond van het bureaublad, dat kan ook via de registry + soft reset, maar dat is een kleiner probleem omdat die niet iedere inlogger veranderd :)



Dingen als "remove my computer desktop ce .net" en variaties invoeren in Google levert alleen maar op dat je onder XP bij de beeldscherminstellingen moet zijn :+ en dat je op CE-devices die regkeys moet verwijderen, als je al zo gelukkig bent uberhaupt op andere plaatsen dan MSDN fatsoenlijke info tegen te komen voor CE .Net / .Net Compact Framework en (in mindere mate) eVB.

offtopic:
Het daaropvolgende probleem is het aanmaken van een RAS-entry, inclusief de +cdgcont=1,"IP","internet";+cgqmin=1 van KPN en de wat kortere +cdgcont=1,"IP","internet" van Vodafone (de enige 2 providers die we nu nog gebruiken/"ondersteunen" (met name omdat we de connectionstring nog niet hebben uitgezocht en we er nog geen klanten mee hebben :+ ), om zo na een hard reset met een simpele kopieeractie van een batch-file vanaf de CF-kaart naar de root, en die vervolgens runnen (waarom kun je geen dingen runnen vanaf CF |:( ) weer online te zijn. Nu moet je handmatig 30 schermpjes af en behoorlijk ingewikkelde strings zoals die hierboven met het onscreen tobo in gaan zitten typen 8)7

Daarvoor moeten we echter eest zelf nog vooronderzoek doen, dus officieel staat ^^ hier niet :P Het is geen luiheid / niet zelf willen zoeken, maar meer er nog niet aan toegekomen zijn) De allereerste PDA waar we mee testten had een RegBackup-utility die vanaf commandline kon restoren, maar helaas stond die onkopieerbaar in rom en hebben de rest van de PDA's niet zoiets..

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Paul
  • Registratie: September 2000
  • Laatst online: 20:05
Okee, ik ben al wel _iets_ verder: het viel me op toen ik handmatig de wallpaper aanpaste (nadat ik de regkeys van My Computer en de Recycle Bin weghaalde) dat de icoontjes ook verdwenen.

Aangezien we in het programma ook de wallpaper aan moeten passen ben ik me daar even op gaan concentreren. Uiteindelijk bij SystemParametersInfo en SPI_SETDESKWALLPAPER uitgekomen, dat schijnt de officiele manier te zijn.

Echter, ook dat werkt niet: ik krijg geen exceptions (MissingMethodException of anders) maar ook de wallpaper (en bijbehorende regkey) veranderen niet.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
    Public Const SPI_SETDESKWALLPAPER As Integer = &H14
    Private Const SPIF_UPDATEINIFILE As Integer = &H1
    Private Const SPIF_SENDCHANGE As Integer = &H2

    Private Declare Sub SystemParametersInfo Lib "CoreDLL.dll" (ByVal action _
        As Integer, ByVal iparam As Integer, ByVal vparam As String, ByVal opt _
        As Integer)

    Public Sub SetWallpaper()
        SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "\Windows\pda.bmp", _
            (SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE))
    End Sub


Updateje: SystemParametersInfo heeft een result, en als dat 0 is gaat het mis. GetLastError geeft vervolgens 1439, ERROR_INVALID_SPI_VALUE, dus maar weer een OntzettendHandigeFunctieDieDie(censuur)PDANietOndersteund++ :(

Nog een updateje:
Visual Basic:
1
2
3
        If SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETDESKWALLPAPER, 0) = 0 Then
            MsgBox(CStr(GetLastError()))
        End If
om dan na een registrychange misschien toch de aanpassingen door te laten voeren geeft geen foutmelding, maar wel vage dingen (dubbele icoontjes op de desktop bijvoorbeeld) en hangt VS2003 :(

[ Voor 22% gewijzigd door Paul op 26-10-2006 13:29 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock