Skip to content

Instantly share code, notes, and snippets.

View devhawk's full-sized avatar

Harry Pierson devhawk

View GitHub Profile
@devhawk
devhawk / gist:5570128
Created May 13, 2013 17:55
VBA macro to delete sub folders from Deleted Items in OUtlook
Sub RemoveAllDeletedItemsSubFolders()
Dim oDeletedItems As Outlook.Folder
Dim oFolders As Outlook.Folders
Dim oItems As Outlook.Items
Dim i As Long
'Obtain a reference to deleted items folder
Set oDeletedItems = Application.Session.GetDefaultFolder(olFolderDeletedItems)
Set oFolders = oDeletedItems.Folders
For i = oFolders.Count To 1 Step -1
static class ObservableExtensions
{
public static IObservable<TSource> CompleteAfter<TSource>(this IObservable<TSource> source, Func<TSource, bool> predicate)
{
return new AnonymousObservable<TSource>(observer =>
{
var complete = false;
return source.Subscribe(
x =>
{
@devhawk
devhawk / gist:4151122
Created November 26, 2012 22:37
SSO Code for Win8 apps
var authClient = new LiveAuthClient();
LiveLoginResult authResult = await authClient.LoginAsync(
new List<string>() { "wl.signin", "wl.basic" });
if (authResult.Status == LiveConnectSessionStatus.Connected)
{
LiveConnectClient client = new LiveConnectClient(authResult.Session);
LiveOperationResult liveOpResult = await client.GetAsync("me");
string name = (string)liveOpResult.Result["name"];
}
@devhawk
devhawk / gist:2979933
Created June 23, 2012 20:53
get-bitrate powershell function
function get-bitrate( $file) {
$shell = New-Object -ComObject Shell.Application
$dir = $shell.NameSpace($file.Directory.FullName)
$fileObj = $dir.parseName($file.Name)
$bitrateAttribute = 0
for( $index = 5; -not $bitrateAttribute; ++$index ) {
$name = $directoryObject.GetDetailsOf( $dir.Items, $index )
if( $name -eq 'Bit rate' ) { $bitrateAttribute = $index }
}
@devhawk
devhawk / win8-js-restapi-boilerplate.js
Created June 18, 2012 17:43 — forked from crtr0/win8-js-restapi-boilerplate.js
Win8 JS library boilerplate for REST services
(function () {
var
// The username and password for BASIC auth
username,
password,
// CHANGE THIS
apiRoot = "https://api.foo.com/version",
@devhawk
devhawk / gist:2920919
Created June 13, 2012 00:03
Cecil Metadata Resolver for WinRT
class WinRTMetadataResolver : MetadataResolver
{
public WinRTMetadataResolver(IAssemblyResolver resolver)
: base(resolver)
{
}
IDictionary<string, ModuleDefinition> _loadedModules = new Dictionary<string, ModuleDefinition>();
public override TypeDefinition Resolve(TypeReference type)
@devhawk
devhawk / gist:2920749
Created June 12, 2012 23:12
P/Invoke and wrapper method for RoParseTypeName
static string[] ParseTypeName(string typename)
{
UInt32 partsCount;
IntPtr[] typeNameParts = null;
try
{
var hr = RoParseTypeName(typename, out partsCount, out typeNameParts);
var parts = partsCount == 0 ? new string[0] : typeNameParts.Select(p => WindowsRuntimeMarshal.PtrToStringHString(p)).ToArray();
@devhawk
devhawk / gist:2920743
Created June 12, 2012 23:12
p/invoke and wrapper method for RoGetMetaDataFile
//note, this wrapper funtion returns the metadata file name and token
//it immediately releases the importer pointer
static Tuple<string, UInt32> ResolveTypeName(string typename)
{
string path;
object importer = null;
UInt32 token;
try
{
@devhawk
devhawk / gist:2915352
Created June 12, 2012 05:33
Portable IMetaDataImport p/invoke definition
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MetadataReader
{
using HRESULT = System.UInt32;
@devhawk
devhawk / gist:2913046
Created June 11, 2012 22:10
P/invoke for MetaDataGetDispenser
class WinRTInterop
{
public static IMetaDataDispenser GetMetadataDispenser()
{
var clsid = new Guid("{E5CB7A31-7512-11d2-89CE-0080C792E5D8}"); //CLSID_CorMetaDataDispenser
//var iid = new Guid("{31BCFCE2-DAFB-11D2-9F81-00C04F79A0A3}"); //IID_IMetaDataDispenserEx
var iid = new Guid("{809C652E-7396-11D2-9771-00A0C9B4D50C}"); //IID_IMetaDataDispenser
object ppv;
var hr = MetaDataGetDispenser(clsid, iid, out ppv);