Necesito ayuda.
Un poquito de orientación. Yo sé que esto que os pido no es sencillo de contestar porque se va a notar al vuelo que soy recien iniciado al c sharp. Si tengo suerte y alguien me da un ratillo de su tiempo yo estoy concentrado en este tema ahora.
Resulta que com dice el topic quiero mandarme un sms a mi dispositivo movil (a mi telefono movil normal y corriente) desde una página en aspx con el visual web developer. Debe haber algun tipo de desorden en el modo que yo estructuro el codigo o defino las apis o algun fragmento que no entiendo del todo y no se substituir adecuadamente. Tengo el código por un lado y el default.aspx vacio por un lado asi como el default.aspx.cs
He pensado ponerlo y indicar en que punto da errores y si alguien lo ve claro que me lo ordene adecuadamente para que debiera funcionar o que me explique a que se debe que genere esos errores.
}
codigo de msdn
-----------------------
public enum AddressType
{
Unknown,
International,
National,
NetworkSpecific,
Subscriber,
Alphanumeric,
Abbreviated
}
public struct PhoneAddress
{
public AddressType AddressType;
public String Address;
}
private static string SMS_MSGTYPE_TEXT = "Microsoft Text SMS Protocol";
private static long SMS_MODE_SEND = 0x00000002;
private static long SMS_OPTION_DELIVERY_NONE = 0x00000000;
private static long SMS_OPTION_DELIVERY_NO_RETRY = 0x00000001;
private static long PS_MESSAGE_OPTION_NONE = 0x00000000;
private enum SMS_DATA_ENCODING
{
SMSDE_OPTIMAL=0,
SMSDE_GSM,
SMSDE_UCS2,
}
private enum PROVIDER_SPECIFIC_MESSAGE_CLASS
{
PS_MESSAGE_CLASS0 = 0,
PS_MESSAGE_CLASS1,
PS_MESSAGE_CLASS2,
PS_MESSAGE_CLASS3,
}
private enum PROVIDER_SPECIFIC_REPLACE_OPTION
{
PSRO_NONE = 0,
PSRO_REPLACE_TYPE1,
PSRO_REPLACE_TYPE2,
PSRO_REPLACE_TYPE3,
PSRO_REPLACE_TYPE4,
PSRO_REPLACE_TYPE5,
PSRO_REPLACE_TYPE6,
PSRO_REPLACE_TYPE7,
PSRO_RETURN_CALL,
PSRO_DEPERSONALIZATION,
}
private struct TEXT_PROVIDER_SPECIFIC_DATA
{
public IntPtr dwMessageOptions;
public PROVIDER_SPECIFIC_MESSAGE_CLASS psMessageClass;
public PROVIDER_SPECIFIC_REPLACE_OPTION psReplaceOption;
}
HRESULT SmsOpen (
const LPCTSTR ptsMessageProtocol,
const DWORD dwMessageModes,
SMS_HANDLE* const psmshHandle,
HANDLE* const phMessageAvailableEvent);
//SmsOpen da error : los const aparecen subrallados en
//rojo y dice que const necesita un tipo.
//supongo que arreglada essta funcion, los demas errores
//se arreglan en cadena pues creo que son el mismo.
[DllImport("sms.dll")]
private static extern IntPtr SmsOpen(String ptsMessageProtocol,
IntPtr dwMessageModes, ref IntPtr psmshHandle, IntPtr
phMessageAvailableEvent);
HRESULT SmsSendMessage (
const SMS_HANDLE smshHandle,
const SMS_ADDRESS * const psmsaSMSCAddress,
const SMS_ADDRESS * const psmsaDestinationAddress,
const SYSTEMTIME * const pstValidityPeriod,
const BYTE * const pbData,
const DWORD dwDataSize,
const BYTE * const pbProviderSpecificData,
const DWORD dwProviderSpecificDataSize,
const SMS_DATA_ENCODING smsdeDataEncoding,
const DWORD dwOptions,
SMS_MESSAGE_ID * psmsmidMessageID);
[DllImport("sms.dll")]
private static extern IntPtr SmsSendMessage(IntPtr smshHandle, IntPtr
psmsaSMSCAddress, IntPtr psmsaDestinationAddress, IntPtr
pstValidityPeriod, byte[] pbData, IntPtr dwDataSize, byte[]
pbProviderSpecificData, IntPtr dwProviderSpecificDataSize,
SMS_DATA_ENCODING smsdeDataEncoding, IntPtr dwOptions, IntPtr
psmsmidMessageID);
HRESULT SmsClose (
const SMS_HANDLE oCommandBarPopup);
[DllImport("sms.dll")]
private static extern IntPtr SmsClose(IntPtr smshHandle);
IntPtr res = SmsOpen(SMS_MSGTYPE_TEXT, (IntPtr)SMS_MODE_SEND, ref hSms,
IntPtr.Zero);
if (res != IntPtr.Zero)
throw new Exception("Could not open SMS.");
Byte[] bDest = new Byte[516];
fixed (byte* pAddr = bDest)
byte *pCurrent = pAddr;
Marshal.WriteInt32((IntPtr)pCurrent, (int)AddressType.Unknown);
pCurrent +=4;
foreach (byte b in Encoding.Unicode.GetBytes(sPhoneNumber))
{
Marshal.WriteByte((IntPtr)pCurrent, b);
pCurrent++;
}
Byte[] ProvData = new Byte[12];
byte[] bMessage = Encoding.Unicode.GetBytes(sMessage);
int nMsgSize = bMessage.Length;
res = SmsSendMessage(hSms, IntPtr.Zero, (IntPtr)pAddr, IntPtr.Zero,
bMessage, (IntPtr)nMsgSize, ProvData, (IntPtr)ProvData.Length,
SMS_DATA_ENCODING.SMSDE_OPTIMAL, (IntPtr)SMS_OPTION_DELIVERY_NONE,
IntPtr.Zero);
Microsoft.Wireless.SMS.SendMessage("Phone Number","Message");
Supongo que el error estará más en estructurar las cabeceras de las apis
que en un fallo debido al soporte de asp. En cualquier caso yo no lo veo
claro y si me informan les estaria agradecido.
Por otra parte, busco sms.dll y no aparece en mi equipo.
Donde debe ir instalado dicho archivo(en que carpeta) y donde
podria conseguirlo. No lo encuentro.
Doy las gracias de antemano.
Espero que puedan ayudarme.
Gracias de nuevo.