noteirak wrote:When running the code, what do you get? any error? or it just complete without doing anything?
Does it work if you try from the GUI instead?
Also, given the reference about
IDisplay::SetSeamlessMode(), you need to have the display facility, which you can check in IGuest. What is the value for it?
Thanks for the prompt response.
Yes, it completes without doing anything. No error returned.
If I do it from GUI (Ctrl+L) it does work and switches to seamless mode, no problem.
I did check the FacilityStatus (AdditionsFacilityStatus status = session.Console.Guest.GetFacilityStatus(AdditionsFacilityType.AdditionsFacilityType_Seamless, out l);) and it returns: status = AdditionsFacilityStatus_Active.
So status seems to be correct.
However the API doesn't switch VM to seamless mode. What should I do next?
See the atached for the code snipped:
Code: Select all
IMachine machine = MainForm.vboxclient.VirtualBox.FindMachine("VM");
Session session = MainForm.vboxclient.Session;
try
{
machine.LockMachine(session, LockType.LockType_Shared);
long l = 0;
AdditionsFacilityStatus status = session.Console.Guest.GetFacilityStatus(AdditionsFacilityType.AdditionsFacilityType_Seamless, out l);
session.Console.Display.SetSeamlessMode(1);
session.Console.Display.InvalidateAndUpdate();
}
catch (Exception ex) { }
finally
{
if (session.State != SessionState.SessionState_Null && session.State == SessionState.SessionState_Locked) session.UnlockMachine();
}