?
LoadLibraryA schlaegt wahrscheinlich fehl. Du ueberpruefst ja auch nicht den rueckgabewert des von dir erstellten threads sonst haettest du das gesehen!
Und warum schlaegt LoadLibrary fehl?
... weil du mit sizeof nicht die groese des speicherbereiches herausbekommen auf den ein pointer zeigt! Konkret is das hier falsch:
VirtualMem = VirtualAllocEx(hProcess,NULL,sizeof(dll_to_inject),MEM_COMMIT,PAGE_READWRITE);
...
if(!WriteProcessMemory(hProcess, VirtualMem, (LPVOID)dll_to_inject, sizeof(dll_to_inject), &rw))
sizeof gibt hier 4 zurueck (weil ein zeiger auf 4bytes gross ist)! und weil in deinen 4 bytes natuerlich nicht der ganze pfad zur dll steht wird LoadLibrary bestimmt "file not found" zurueckgeben.
also ersetz die beiden "sizeof's" jeweils durch strlen(...)+1
obs dann geht weis ich auch nicht aber die chancen stehen schonmal besser