Monthly Archives: Januar 2012

Energieeinstellungen in PowerShell ändern

Mich hat eben interessiert ob ich nicht auch die Energieeinstellungen von Windows via PowerShell setzen kann. Nach kurzer Recherche stellt sich raus, ja kann ich und das sogar extrem simple:

powercfg -list
Bestehende Energieschemen (* Aktiv)
-----------------------------------
GUID des Energieschemas: 381b4222-f694-41f0-9685-ff5bb260df2e  (Ausbalanciert)
GUID des Energieschemas: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  (Höchstleistung) *
GUID des Energieschemas: a1841308-3541-4fab-bc81-f71556f20b4a  (Energiesparmodus)

Das aktuelle gesetzte Energieschema kann man dann wie folgt auslesen:

powercfg -getactivescheme

Gesetzt wird das Energieschema dann mit:

powercfg -setactive $GUID

3 Comments

Filed under PowerShell, Windows

Erste eigene Windows Phone 7 App: MPC-Remote

Anfang Dezember war es bei mir mal wieder soweit, ich brauchte ein neues Handy. Da mir Windows Phone 7 schon bei meinen ersten Tests sehr gut gefallen hatte und mich das Design des neuen Nokia Lumia 800 sehr angesprochen hat, war schnell klar welches es wird.

Da ich mich unter anderem auch ein wenig auf die Programmierung mit C# verstehe war schnell klar, dass ich auch eigene Apps schreiben möchte. Um ein wenig in die Entwicklung rein zu kommen, welche doch ein Stück von der Desktop-App Entwicklung abweicht, besuchte ich das ‚Windows Phone 7 Coding Camp‘ welches von Microsoft in Zusammenarbeit mit der Hochschule der Medien in Stuttgart abgehalten wurde.

Ohne lange nachdenken zu müssen, war mir klar was für eine App ich schreibe. Und zwar eine Remote Control für Media Player Classic – Home Cinema. Warum? Weil ich den Player schlicht dem VLC vorziehe und es noch keine, meinen Ansprüchen genügende, App gab.

Meine App hab ich auf den Namen ‚MPC-HC Remote‘ getauft. Finden könnt ihr sie im Marketplace auf eurem Smartphone oder direkt über diesen Link.

Features:

  • Play/Pause
  • Nächster/letzter Titel
  • Lautstärken Steuerung
  • Vollbild de-/aktivieren

Geplante Features:

  • Browse Funktion
  • Schlagt mir was vor 😉

1 Comment

Filed under C#, Windows Phone

Exception Bug in .Net WebClient DownloadStringAsync Methode [Update]

Tja da frag ich mich ewig warum die ‚DownloadStringAsyn‚-Methode der ‚WebClient‚-Klasse von .Net mir eine NullReferenz Exception zurück gibt und am Ende muss ich feststellen, dass es an meiner URL lag… Von vorne:

Ich versuche mit der ‚DownloadStringAsync‘-Methode die browser.html von ‚MPC-HC‚ abzurufen um so die dort aufgeführten Werte in der dazugehörigen Windows Phone 7 App zu verarbeiten. Dies aber funktioniert nie, da ich immer eine NullReferenz Exception zurückbekomme.

So sieht z.B. eine der aufgerufenen URLs aus:

http://10.41.2.2:13579/browser.html?path=C:\Users\username\Desktop

Das Problem?
Die ‚DownloadStringAsync‘-Methode kommt nicht mit den Backslash’s klar und wirft eine absolut nichts sagende Exception.

Die Lösung?
‚MPC-HC‘ akzeptiert es auch, wenn man den Pfad Namen durch Slash’s trennt. Und schon läufts 🙂 Dies ist natürlich kein Bugfix sondern lediglich ein Workaround. Der Bug selbst ist hier schon bei Microsoft gemeldet.

[Update]: Ok, ich habe nun ein gut funktionierenden Workaround gefunden, man muss nur alle Backslashs mit „%5C“ ersetzen dann klappt alles wie gewollt.

Exception Message Ausschnitt:

-		error	{"An exception occurred during a WebClient request. "}	System.Exception {System.Net.WebException}
+		[System.Net.WebException]	{"An exception occurred during a WebClient request. "}	System.Net.WebException
		_data	null	System.Collections.IDictionary
		_HResult	-2146233079	int
-		_innerException	{""}	System.Exception
		_data	null	System.Collections.IDictionary
		_HResult	-2146233088	int
+		_innerException	{"0x80000012"}	System.Exception
		_message	""	string
+		_methodDescs	{System.IntPtr[9]}	System.IntPtr[]
		_optionalData	null	object[]
+		Data	{System.Collections.ListDictionaryInternal}	System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
		HResult	-2146233088	int
-		InnerException	{"0x80000012"}	System.Exception
		_data	null	System.Collections.IDictionary
		_HResult	-2146233088	int
		_innerException	null	System.Exception
		_message	"0x80000012"	string
+		_methodDescs	{System.IntPtr[15]}	System.IntPtr[]
		_optionalData	null	object[]
+		Data	{System.Collections.ListDictionaryInternal}	System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
		HResult	-2146233088	int
		InnerException	Der Ausdruck konnte nicht ausgewertet werden.	System.Exception
		Message	"0x80000012"	string
		StackTrace	"   at MS.Internal.XcpImports.CheckHResult(UInt32 hr)\r\n   at MS.Internal.XcpImports.WebRequest_Send(InternalWebRequest request)\r\n   at MS.Internal.InternalWebRequest.Send()\r\n   at System.Net.Browser.ClientHttpWebRequest.PrepareAndSendRequest(String method, Uri requestUri, Stream requestBodyStream, WebHeaderCollection headerCollection, CookieContainer cookieContainer)\r\n   at System.Net.Browser.ClientHttpWebRequest.BeginGetResponseImplementation()\r\n   at System.Net.Browser.ClientHttpWebRequest.InternalBeginGetResponse(AsyncCallback callback, Object state)\r\n   at System.Net.Browser.ClientHttpWebRequest.BeginGetResponse(AsyncCallback callback, Object state)\r\n   at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream, CompletionDelegate completionDelegate, AsyncOperation asyncOp)\r\n   at System.Net.WebClient.DownloadStringAsync(Uri address, Object userToken)\r\n   at MPC_Remote.MainPage.button1_Click(Object sender, RoutedEventArgs e)\r\n   at System.Windows.Controls.Primitives.ButtonBase.OnClick()\r\n   at System.Windows.Controls.Button.OnClick()\r\n   at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)\r\n   at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)\r\n   at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)\r\n"	string
		Message	""	string
		StackTrace	"   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)\r\n   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)\r\n   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)\r\n   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClassa.b__8(Object state2)\r\n   at System.Threading.ThreadPool.WorkItem.WaitCallback_Context(Object state)\r\n   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n   at System.Threading.ThreadPool.WorkItem.doWork(Object o)\r\n   at System.Threading.Timer.ring()\r\n"	string
		_message	"An exception occurred during a WebClient request. "	string
+		_methodDescs	{System.IntPtr[17]}	System.IntPtr[]
		_optionalData	null	object[]
+		Data	{System.Collections.ListDictionaryInternal}	System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
		HResult	-2146233079	int
+		InnerException	{""}	System.Exception
		Message	"An exception occurred during a WebClient request. "	string
		StackTrace	"   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()\r\n   at System.Net.DownloadStringCompletedEventArgs.get_Result()\r\n   at MPC_Remote.MainPage.client_DownloadStringCompleted(Object sender, DownloadStringCompletedEventArgs e)\r\n   at System.Net.WebClient.OnDownloadStringCompleted(DownloadStringCompletedEventArgs e)\r\n   at System.Net.WebClient.DownloadStringOperationCompleted(Object arg)\r\n   at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)\r\n   at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)\r\n   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)\r\n   at System.Delegate.DynamicInvokeOne(Object[] args)\r\n   at System.MulticastDelegate.DynamicInvokeImpl(Object[] args)\r\n   at System.Delegate.DynamicInvoke(Object[] args)\r\n   at System.Windows.Threading.DispatcherOperation.Invoke()\r\n   at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority)\r\n   at System.Windows.Threading.Dispatcher.OnInvoke(Object context)\r\n   at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args)\r\n   at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args)\r\n   at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)\r\n"	string

Leave a Comment

Filed under C#, Windows

Regex für Media Player Classic – Home Cinema Browse

Ich bastel gerade für Windows Phone 7 eine Remote Control App für ‚Media Player Classic – Home Cinema‚, welche auch die browse.html Seite des Webinterfaces nutzen soll. Um diese sinnvoll verarbeiten zu können, benötigt man einen Regex welcher die benötigten Infos aus der HTML-Seite rausparsed. Das hier hat bei mir in Version 1.5.2.3456 geklappt:

.*path=(?<Path>.*?)\">(?<Name>.*)</a>.*nobr.?>(?<Size>\\d+).*|.*path=(?<Path>.*?)\">(?<Name>.*)</a>.*Directory.*

Das ganze nutze ich so ein ‚Match‘-Regex. Es kommt raus:

  • Pfad zur Datei/Verzeichnis
  • Datei-/Verzeichnisname
  • Wenn vorhanden: Filesize in KiloByte

Leave a Comment

Filed under C#

Windows Phone „Textblock“ Manipulation

Ich entwickle gerade eine App für Windows Phone 7. Hierbei stieß ich auf das Problem, das der Text innerhalb eines ‚Textblocks‘ sich nicht über mehrere Zeilen ausdehnte und nicht mittig war. Nach kurzem googlen, fand ich heraus, dass man dem Textblock folgende Eigenschaften geben muss:

 

Für Text in einem Textblock mehrspaltig zu bekommen:

TextWrapping="Wrap"

Für den Text in einem Textblock mittig zu bekommen:

TextAlignment="Center"

Leave a Comment

Filed under Allgemein