i think you are going to have to use api. an alternate method would be to make a vb6 app with only a main sub and shell the command out to the vb6 app. that would keep your .net pure

although the api isn' that big a deal in truth most api is cross platform especial stuff like changing the desktop

i mean what do you think c++ uses win32 api is what it uses for everything