he aqui una opcion que se me ocurre sin usar el input hidden.
Código:
<form ... >
...
<select onchange="this.form.boton.value = 'select'; /* resto de tu codigo para enviar formulario, como ejemplo this.form.submit();*/">
...
</select>
<input type="submit" name="boton" value="enviar" />
</form>
en el servidor, recibiras el query
boton con uno de los dos valores:
enviar o select y te dejas llevar por esos valores para identificar que control se utilizo para el envio. es practicamente lo mismo con el input hidden, lo unico que en lugar asignar el valor en el boton submit, ambos controles tienen que escribir un valor al input hidden.