Serial.println("#S|WEBCAM|[]#"); // start Webcam software
delay (5000); // wait 5 seconds (max) for answer from Gobetwino (=porcess ID)
Serial.println("#S|SENDK|[0&{HOME}]#");
delay(5000);
Serial.println("#S|SENDK|[0&%{F4}]#");
delay(1000);
In this code you are asuming that GoBetwino send 0 back as the process id, instead of actually reading the processid GoBetwino is sending. Please check the supplied sample code to see how to do that correct. If you are not starting other programs and only start the webcam software once the process id is probebly 0 but assumption is the mother of all fu.. ups.
Also in this code where you read the buttonstate:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, LOW);
You probably need some debouncing unless you are doing that in hardware
One more thing that comes to mind:
Does your webcam softwarre open multiple windows ? i know from other people that it can be a problem with he SENDK command. Everytime GoBetwino executes a SENDK command it forces the recieving application's window to be the foreground window, this does not work well if the application opens more than one window.