Clipper On Line • Ver Tópico - Chamada HTTP para envio de SMS

Chamada HTTP para envio de SMS

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Chamada HTTP para envio de SMS

Mensagempor rochinha » 06 Abr 2016 16:00

Amiguinhos,

asimões

:*
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Chamada HTTP para envio de SMS

Mensagempor asimoes » 06 Abr 2016 17:17

Pessoal,

Segue um exemplo mais completo:

#include "wvtwin.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#include "dbinfo.ch"
#include "fileio.ch"
#include "hbdyn.ch"
#include "hbthread.ch"
#include "hbhrb.ch"
#include "common.ch"
#include "error.ch"
#include "hboo.ch"
#include "inkey.ch"
#include "hbver.ch"

THREAD STATIC AppSaveScreen := {}

FUNCTION MAIN(cTeste)
LOCAL   hLib, nStatus, oElemento
PRIVATE cErro:="", cTituloJanela:=""
PRIVATE cColorPrompt := "W+/B, W+/B*,,,B/W*"
PRIVATE cColorMenu   := "W+/B*, W+/B*,,,B/W*"
PRIVATE cColorGet    := "W+/B, B+/GR,,,B/W*"
PRIVATE cColorDbData := "W+/B, B+/GR, B/W*, W+/R*"
PRIVATE cCorCaixa    := "W+/B"
PRIVATE cCorBorda    := "GR+/B"


   Try
      IF hb_FileExists("DarumaFrameWork.dll")
         hLib := hb_LibLoad( "DarumaFrameWork.dll" )
      ELSE
         cErro        :="DLL DarumaFrameWork.dll, ausente"
         cTituloJanela:="Modem Daruma"
         Break
      ENDIF
     
      IF hLib != Nil
         hwg_MsgInfo("DLL DarumaFrameWork.dll, carregada com sucesso", "Modem Daruma")
      ELSE
         cErro        :="DLL DarumaFrameWork.dll, não foi carregada"
         cTituloJanela:="Modem Daruma"
         Break
      ENDIF
     
      SetColor(cColorPrompt)
     
      DO WHILE .T.
     
         Caixa(00, 00, 08, 20, "D", , cCorCaixa)
     
         cColor := SetColor()
     
         @ 01, 01 PROMPT "Inicializar Modem  " MESSAGE {|| Msg("Iniciar o modem para as demais operações")}
         @ 02, 01 PROMPT "Enviar SMS         " MESSAGE {|| Msg("Enviar mensagem SMS para um telefone")}
         @ 03, 01 PROMPT "Listar SMS Telefone" MESSAGE {|| Msg("Listar SMS de um telefone")}
         @ 04, 01 PROMPT "Listar SMS Modem   " MESSAGE {|| Msg("Listar todos SMS")}
         @ 05, 01 PROMPT "Receber SMS        " MESSAGE {|| Msg("Mostrar na tela todos os SMS recebidos não lidos")}
         @ 06, 01 PROMPT "Trocar SIM1/SIM2   " MESSAGE {|| Msg("Trocar o chip SIM")}
         @ 07, 01 PROMPT "Sair               " MESSAGE {|| Msg("Sair")}
         *
         MENU TO nOpc         
     
         SetColor(cColor)
         
         SWITCH nOpc
         CASE 1
            IniciarModem(hLib)
            EXIT
         CASE 2
            wSave()
            EnviarSms(hLib)
            WRestore()
            EXIT
         CASE 3
            wSave()
            ListarSMSTelefone(hLib)
            WRestore()
            EXIT           
         CASE 4
            wSave()
            ListarSMSModem(hLib)
            WRestore()
            EXIT           
         CASE 5
            wSave()
            MostrarSMSRecebido(hLib)
            WRestore()
            EXIT           
          CASE 6
            wSave()
            TrocarSim(hLib)
            WRestore()
            EXIT               
         CASE 7
            hb_libFree( hLib )
            QUIT
            EXIT   
         ENDSWITCH
      ENDDO
   Catch
      hwg_MsgStop(cErro, cTituloJanela)
      hb_libFree( hLib )
   Finally
      hb_libFree( hLib )
   End 
RETURN Nil

FUNCTION IniciarModem(hLib)
LOCAL iRetorno
     Msg("Aguarde, iniciando o modem.")
     iRetorno := hb_dynCall( { "eInicializar_MODEM_DarumaFramework", hLib, HB_DYN_CALLCONV_STDCALL})
     IF iRetorno != 1
        hwg_MsgStop("Modem iniciado com erro, código de erro "+hb_ntos(iRetorno), "eInicializar_MODEM_DarumaFramework")
     ELSE
        hwg_MsgInfo("Modem iniciado com sucesso", "eInicializar_MODEM_DarumaFramework")
     ENDIF
     Msg("")
RETURN iRetorno

FUNCTION EnviarSMS(hLib)
LOCAL iRetorno, cTelefone, cMens1, cMens2
      cTelefone:=Space(11)
      cMens1   :=Space(70)
      cMens2   :=Space(70)
      Caixa(09, 00, 14, MaxCol(), , , cCorCaixa, .F.)
      SetColor(cColorGet)
      @ 10, 01     SAY "Telefone: " GET cTelefone 
      @ 11, 01     SAY "Mensagem (até 140 caracteres) ex. 2198472XXXX"
      @ 12, 01     GET cMens1
      @ 13, 01     GET cMens2
      READ
      IF !Empty(cTelefone) .AND. !Empty(cMens1+cMens2)
         Msg("Aguarde, enviando SMS.")
         iRetorno := hb_dynCall( { "tEnviarSms_MODEM_DarumaFramework", hLib, HB_DYN_CALLCONV_STDCALL}, cTelefone, cMens1 + cMens2)
         IF iRetorno != 1
            hwg_MsgStop("Modem com erro, código de erro "+hb_ntos(iRetorno), "tEnviarSms_MODEM_DarumaFramework")
         ELSE
            hwg_MsgInfo("Mensagem enviada  com sucesso", "tEnviarSms_MODEM_DarumaFramework")
         ENDIF
         Msg("")
      ENDIF
RETURN iRetorno

FUNCTION ListarSMSTelefone(hLib)
LOCAL iRetorno, cTelefone:=Space(11)
      fErase("ListaSmsTelefone.txt")
      Caixa(09, 00, 11, MaxCol(), , , cCorCaixa, .F.)
      SetColor(cColorGet)
      @ 10, 01 SAY "Telefone: " GET cTelefone 
      READ
      IF !Empty(cTelefone)
         //iRetorno := hb_dynCall( { "rListarSMSTelefone_MODEM_DarumaFramework", hLib, HB_DYN_CALLCONV_STDCALL}, '+5521984723382')
         Msg("Aguarde, enviando comando.")
         iRetorno := hb_dynCall( { "rListarSMSTelefone_MODEM_DarumaFramework", hLib, HB_DYN_CALLCONV_STDCALL}, '+55'+cTelefone)
         IF iRetorno != 1
            hwg_MsgStop("Modem com erro, código de erro "+hb_ntos(iRetorno), "rListarSMSTelefone_MODEM_DarumaFramework")
         ELSE
            hwg_MsgInfo("Comando enviado com sucesso", "rListarSMSTelefone_MODEM_DarumaFramework")
         ENDIF
         Msg("")
         IF hb_FileExists("ListaSmsTelefone.txt")
            hwg_MsgInfo("Lista de mensagens do telefone "+cTelefone+ " criada com sucesso", "Modem Daruma")
         ENDIF
      ENDIF
RETURN iRetorno

FUNCTION ListarSMSModem(hLib)
LOCAL iRetorno
      fErase("ListaSms.txt")
      Msg("Aguarde, enviando comando.")
      iRetorno := hb_dynCall( { "rListarSms_MODEM_DarumaFramework", hLib, HB_DYN_CALLCONV_STDCALL})
      IF iRetorno != 1
         hwg_MsgStop("Modem com erro, código de erro "+hb_ntos(iRetorno), "rListarSms_MODEM_DarumaFramework")
      ELSE
         hwg_MsgInfo("Comando enviado com sucesso", "rListarSms_MODEM_DarumaFramework")
      ENDIF
      Msg("")
      IF hb_FileExists("ListaSms.txt")
         hwg_MsgInfo("Lista de mensagens do modem criada com sucesso", "Modem Daruma")
      ENDIF
RETURN iRetorno

FUNCTION MostrarSMSRecebido(hLib)
LOCAL lContinua:=.T., nLineLen:= 77, lWrap:=.T.

      Caixa(09, 00, 23, MaxCol(), , , cCorCaixa, .F.)

      DO WHILE lContinua
         sIndiceSMS := Space(5)
         sNumFone   := Space(15)
         sData      := Space(10)
         sHora      := Space(10)
         sMsg       := Space(500)
         Msg("Aguarde, enviando comando.")
         iRetorno   := hb_dynCall( { "rReceberSms_MODEM_DarumaFramework", hLib, HB_DYN_CALLCONV_STDCALL}, @sIndiceSMS,;
                                                                                                          @sNumFone,;
                                                                                                          @sData,;
                                                                                                          @sHora,;
                                                                                                          @sMsg)
         

         IF iRetorno < 0
            hwg_MsgStop("Retorno modem código "+hb_ntos(iRetorno), "rReceberSms_MODEM_DarumaFramework")
            lContinua:=.F.
         ELSE
            Msg("")
            IF !Empty(sMsg)
               sIndiceSMS:=SubStr(RTrim(sIndiceSMS), 1, Len(RTrim(sIndiceSMS))-1)
               sNumFone  :=SubStr(RTrim(sNumFone), 1, Len(RTrim(sNumFone))-1)
               sData     :=SubStr(RTrim(sData), 1, Len(RTrim(sData))-1)
               sHora     :=SubStr(RTrim(sHora), 1, Len(RTrim(sHora))-1)
               sMsg      :=SubStr(RTrim(sMsg), 1, Len(RTrim(sMsg))-1)
               @ 10, 01 SAY "Indice   : " + sIndiceSMS
               @ 11, 01 SAY "Telefone : " + sNumFone
               @ 12, 01 SAY "Data     : " + sData
               @ 13, 01 SAY "Hora     : " + sHora
               @ 14, 01 SAY "Mensagem : "
               hb_MemoWrit("sms_recebido.txt", sMsg)
               iMax := MLCount( sMsg, nLineLen, 0, .T. )
               nLin := 16
               FOR i:=1 TO iMax
                   @ nLin, 01 SAY  MemoLine( sMsg, nLineLen, i, 0, .T. )
                   nLin++
               NEXT
               hwg_MsgInfo("Comando executado com sucesso", "Modem Daruma")
               @ 10, 01 CLEAR TO MaxRow()-1, MaxCol()-1
               IF Empty(sIndiceSMS)
                  EXIT
               ENDIF
            ELSE
               EXIT
            ENDIF
         ENDIF
      ENDDO
RETURN iRetorno

FUNCTION TrocarSim(hLib)
LOCAL iRetorno, cSIM:=Space(4)
      Caixa(09, 00, 11, MaxCol(), , , cCorCaixa, .F.)
      SetColor(cColorGet)
      @ 10, 00 SAY "Informe SIM1 ou SIM2: " GET cSIM PICTURE "@!"  VALID cSIM $ "SIM1, SIM2"
      READ
      IF !Empty(cSIM)
         iRetorno := hb_dynCall( { "regBandejaInicio_MODEM_DarumaFramework", hLib, HB_DYN_CALLCONV_STDCALL}, cSIM)
         IF iRetorno != 1
            hwg_MsgStop("Modem com erro, código de erro "+hb_ntos(iRetorno), "regBandejaInicio_MODEM_DarumaFramework")
         ENDIF
     ENDIF
RETURN iRetorno

FUNCTION Caixa(nLinI, nColI, nLinF, nColF, cTipo, cCorBox, cCorWin, lSombra, lClear)
   hb_Default(@cTipo, "")
   hb_Default(@cCorBox, "GR+/B")
   hb_Default(@cCorWin, "GR+/B")
   hb_Default(@lSombra, .T.)
   hb_Default(@lClear, .F.)
   IF cTipo = "D"
      @ nLinI, nColI TO nLinF, nColF DOUBLE COLOR cCorBox
   ELSE
      @ nLinI, nColI TO nLinF, nColF COLOR cCorBox
   ENDIF
   IF lClear
      ClearWin(nLinI+1, nColI+1, nLinF-1, nColF-1, cCorWin)
   ENDIF
   ColorWin(nLinI+1, nColI+1, nLinF-1, nColF-1, cCorWin)
RETURN Nil

FUNCTION Msg(cMsg)
   hb_Default(@cMsg, "")
   IF !Empty(cMsg)
      @ MaxRow(), 00 SAY PADC(cMsg, MaxCol()+1) COLOR "W+/B*"
   ELSE
      @ MaxRow(), 00 SAY PADC("", MaxCol()+1)   COLOR "W+/B*"
   ENDIF
RETURN .T.

INIT FUNCTION AppSetup()
 
  ANNOUNCE hwg_ErrSys
 
  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_PT850
  REQUEST HB_CODEPAGE_PTISO
  HB_LANGSELECT("PT")
  HB_CDPSELECT( "PT850" )
  HB_CDPSELECT( "PTISO" )
  REQUEST DBFNTX
 
  REQUEST DBFCDX
 
  RddSetDefault("DBFCDX")
 
  SET TYPEAHEAD TO 0
  SET INTENSITY ON
  SET SCOREBOARD OFF
  SET DELETED ON
  SET SAFETY OFF
  SET DATE ANSI
  SET ESCAPE ON
  SET DATE FORMAT "DD/MM/YY"
  SET DELIMITERS TO
  SET EXCLUSIVE OFF
  SET WRAP ON
  SET EPOCH TO 1920
  SET OPTIMIZE ON
  SET AUTOPEN ON //OFF
  SET DBFLOCKSCHEME TO DB_DBFLOCK_CLIPPER
  SET MESSAGE TO 24 CENTER
 
  Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
 
  hb_gtReload( "WVT" )
 
  GtSetupPalette()
   
  SetColor("W+/B")
 
  CLS

  IniciaJanela()


RETURN Nil

FUNCTION GtSetupPalette
LOCAL aPaletteRgb, aPalette, nCont

aPalette := { ;
         wapi_Rgb(  30, 30,   30 ), ; //  0 N   Black      Preto                   New Form Font Color
         wapi_Rgb(   0,  0,  140 ), ; //  1 B   Blue       Azul 170
         wapi_Rgb(  54,  66,   6 ), ; //  2 G   Green      Verde
         wapi_Rgb(   0, 133, 133 ), ; //  3 BG  Cyan       Azul Celeste            Title and Selected BackGround
         wapi_Rgb( 150,   0,   0 ), ; //  4 R   Red        Vermelho
         wapi_Rgb( 133,   0, 133 ), ; //  5 RB  Magenta    Rosa
         wapi_Rgb( 255, 255,   0 ), ; //  6 GR  Brown      Marrom
         wapi_Rgb( 211, 237, 250 ), ; //  7 W   White      Branco
         wapi_Rgb(  42,  42,  42 ), ; //  8 N+  Gray       Cinza
         wapi_Rgb(   0, 114, 198 ), ; //  9 B+  +Blue      Azul Claro
         wapi_Rgb(  42,  42,  42 ), ; // 10 G+  +Green     Verde Claro // 0,96,64
         wapi_Rgb( 132, 150, 173 ), ; // 11 BG+ +Cyan      Azul Celeste Claro
         wapi_Rgb( 248,   0,  38 ), ; // 12 R+  +Red       Vermelho Claro          Alert
         wapi_Rgb(  64,   0,  64 ), ; // 13 RB+ +Magenta   Rosa Claro
         wapi_Rgb( 216, 152,   0 ), ; // 14 GR+ Yellow     Amarelo
         wapi_Rgb( 255, 255, 255 ) }  // 15 W+  +White     Branco Claro            New Get and Selected Font Color

    hb_gtInfo( HB_GTI_PALETTE, aPalette )
RETURN Nil

FUNCTION WSave()
   Aadd( AppSaveScreen, SaveScreen(0, 0, MaxRow() ,MaxCol()) )
RETURN NIL

FUNCTION WRestore()
   IF Len( AppSaveScreen ) > 0
      RestScreen(0, 0, MaxRow(), MaxCol(), ATail( AppSaveScreen ) )
      aSize( AppSaveScreen, Len( AppSaveScreen ) - 1 )
   ENDIF
RETURN NIL

FUNCTION IniciaJanela()

   cTituloJanela:="Teste Envio SMS Com Modem Daruma Min210B USB"
   
   HB_gtInfo(HB_GTI_FONTNAME, "Lucida Console")
   HB_gtInfo(HB_GTI_WINTITLE, cTituloJanela)
   HB_gtInfo(HB_GTI_ICONFILE, "P:\GERAL\HARBOUR\HARB_WIN.ICO" )
   HB_gtInfo(HB_GTI_CLOSABLE, .F. )
   HB_gtInfo(HB_GTI_ISGRAPHIC, .T. )
   HB_gtInfo(HB_GTI_STDERRCON, .T. )
   HB_gtInfo(HB_GTI_COMPATBUFFER, .T. )
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_SHOWWINDOW, SW_NORMAL )
   HB_GtInfo(HB_GTI_MAXIMIZED, .T. )
   
RETURN Nil

FUNCTION HB_GTSYS()
   REQUEST HB_GT_WVT_DEFAULT
   REQUEST HB_GT_WVG
   REQUEST HB_GT_WGU
   REQUEST HB_GT_WVT
RETURN Nil

#pragma BEGINDUMP
#include <windows.h>
#include <windef.h>
#include <tlhelp32.h>
#include <hbapi.h>
#include <hbapiitm.h>
HB_FUNC_EXTERN( INKEYGUI );
HB_FUNC( INKEYGUI ) 
{                                                                     
    MSG Msg;
    BOOL lNoLoop=FALSE;
    UINT dwTimer, nRet=0, uTimeout=10;   

    if( HB_ISNUM(1) ) uTimeout = hb_parni(1);
   
    //if( HB_ISNUM(1) ) uTimeout = hb_partd(1);
   
    if( uTimeout==0 ) uTimeout = 0x0FFFFFFF;

    if( uTimeout>0 ) uTimeout = uTimeout * 1000;

    dwTimer = SetTimer( NULL, 0, uTimeout, NULL);

    while( GetMessage(&Msg, NULL, 0, 0) )
    {

       switch( Msg.message )
       {
          case WM_KEYDOWN    :
          case WM_SYSKEYDOWN : { nRet    = Msg.wParam; lNoLoop = TRUE; break; }
          case WM_TIMER      : { lNoLoop = Msg.wParam == dwTimer;      break; }
       }
 
       if( lNoLoop )
       {
          KillTimer( NULL, dwTimer );
          hb_retni( nRet );
          return ;
       }
       else 
       {
          TranslateMessage( &Msg );  // Translates virtual key codes
          DispatchMessage( &Msg );   // Dispatches message to window
       } 
    }
}
#pragma ENDDUMP

#pragma BEGINDUMP
/****************************
*
*
*/
#include "windows.h"
#include <windef.h>
#include <tlhelp32.h>
#include <hbapi.h>
//#include <hbapiitm.h>

    /*
    * WIN_GETPROCESSLIST( aArray [,  ] ) -> nResult
    * Get current process list on Windows OS. by Vailton Renato
    *
    * Returns:
    *
    *  0 - Success
    *  1 - Argument error
    *  2 - Unable to obtain current process list.
    *  3 - Error retrieving information about processes.
    *
    * 15/12/2009 - 18:58:58
    */
    static
    BOOL GetUserAndDomainFromPID( DWORD ProcessId, PHB_ITEM pUser, PHB_ITEM pDomain )
    {
      HANDLE hToken;
      HANDLE ProcessHandle;
      DWORD cbBuf;
      SID_NAME_USE snu;
      char *User = NULL;
      char *Domain = NULL;
      DWORD UserSize = 0L;
      DWORD DomainSize = 0L;
      BOOL bResult = FALSE;

      ProcessHandle = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, ProcessId );

      if (ProcessHandle)
      {
        if (OpenProcessToken(ProcessHandle, TOKEN_QUERY, &hToken))
        {
          BOOL bSuccess = FALSE;
          PTOKEN_USER ptiUser;
         
          if (!GetTokenInformation(hToken, TokenUser, NULL, 0, &cbBuf ))
          {
             ptiUser  = (TOKEN_USER *) hb_xgrab( cbBuf );
             bSuccess = GetTokenInformation( hToken, TokenUser, (LPVOID) ptiUser, cbBuf, &cbBuf);
          }

          CloseHandle(hToken);

          if (bSuccess)
          {
             LookupAccountSid( NULL, ptiUser->User.Sid, NULL, &UserSize, NULL, &DomainSize, &snu);

             if (UserSize != 0 && DomainSize != 0)
             {
               User   = (char *) hb_xgrab( UserSize );
               Domain = (char *) hb_xgrab( DomainSize );

               if (LookupAccountSid( NULL, ptiUser->User.Sid, User, &UserSize,
                                      Domain, &DomainSize, &snu))
               {
                /* Result OK */
                bResult = TRUE;
               }
             }
           }

          if (ptiUser)
             hb_xfree( ptiUser );
        }
        CloseHandle(ProcessHandle);
      }

      if (!User)
          hb_itemPutC( pUser, "" );
      else
          hb_itemPutCLPtr( pUser, User, UserSize );

      if (!Domain)
          hb_itemPutC( pDomain, "" );
      else
          hb_itemPutCLPtr( pDomain, Domain, DomainSize );

      return bResult;
    }

    HB_FUNC( WIN_GETPROCESSLIST )
    {
      HANDLE hProcessSnap;
      PROCESSENTRY32 pe32;
      PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY );
      const char * szAppName = hb_parcx(2);
      BOOL bCanAdd = TRUE;

       if( !pArray )
       {
          hb_retni( 1 );
          return;
       }

      // Take a snapshot of all processes in the system.
      hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

      if( hProcessSnap == INVALID_HANDLE_VALUE )
      {
        // CreateToolhelp32Snapshot (of processes)
        hb_retni( 2 );
        return;
      }

      // Set the size of the structure before using it.
      pe32.dwSize = sizeof( PROCESSENTRY32 );

      // Retrieve information about the first process,
      // and exit if unsuccessful
      if( !Process32First( hProcessSnap, &pe32 ) )
      {
        hb_retni( 3 );
        CloseHandle( hProcessSnap );          // clean the snapshot object
        return;
      }

      // Ignores a empty string on seconds argument
      if ( hb_parclen(2) < 1 )
          szAppName = NULL;

      // Now walk the snapshot of processes, and
      // display information about each process in turn
      do
      {
        PHB_ITEM pSubarray;

        if (szAppName)
          bCanAdd = ( hb_stricmp( szAppName, pe32.szExeFile ) == 0 );

        if (bCanAdd)
        {
           pSubarray = hb_itemNew( NULL );

           hb_arrayNew( pSubarray, 5 );
           hb_arraySetC    ( pSubarray, 1, pe32.szExeFile );                    // Process Name
           hb_arraySetNInt ( pSubarray, 2, pe32.th32ProcessID );                // Process ID
           hb_arraySetNInt ( pSubarray, 3, pe32.th32ParentProcessID );          // Parent process ID

           GetUserAndDomainFromPID( pe32.th32ProcessID,
                                    hb_arrayGetItemPtr( pSubarray, 4 ),         // User
                                    hb_arrayGetItemPtr( pSubarray, 5 ) );       // Domain
           hb_arrayAddForward( pArray, pSubarray );
        }
      } while( Process32Next( hProcessSnap, &pe32 ) );

      CloseHandle( hProcessSnap );
      hb_retni( 0 );
      return;
    }

    /*
    * WIN_KILLPROCESS(  ) -> lKilled
    * Kill a process using Win32 API. by Vailton Renato
    * 16/12/2009 - 00:08:48
    */
    HB_FUNC( WIN_KILLPROCESS )
    {
       DWORD ProcID;
       BOOL Result = FALSE;

       if (HB_ISNUM(1))
       {
          ProcID = (DWORD) hb_parnl(1);
          Result = TerminateProcess(OpenProcess( PROCESS_TERMINATE, FALSE, ProcID ),0);
       }

       hb_retl( Result );
    }
#pragma ENDDUMP       
     
Anexos
h-ModemDaruma.zip
Versão atualizada do exemplo
(5.46 MiB) Baixado 171 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Chamada HTTP para envio de SMS

Mensagempor asimoes » 07 Abr 2016 11:03

Para gerar as listas:

As funções da dll criam as listas.

ListaSms.txt (rListarSms_MODEM_DarumaFramework)
ListaSmsTelefone.txt (rListarSMSTelefone_MODEM_DarumaFramework)

No XML DarumaFrameWork.xml criado pela dll DarumaFrameWork.dll
Na tag: LocalArquivos deve ser informado o local onde serão gerados os arquivos, quando o xml é criado o valor default é C:\ mas não cria os arquivos, deve ser informado então .\ que neste caso a dll atualiza a tag para o diretório onde a dll está sendo executada, ou informar na "mão" a pasta com a barra no final, conforme exemplo abaixo:

<START>
<LocalArquivos>D:\Harbour\h-ModemDaruma\</LocalArquivos>

Outras informações estão no arquivo: DarumaFramework_Help.chm
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Chamada HTTP para envio de SMS

Mensagempor asimoes » 08 Abr 2016 07:52

Função para gravar lista sms

GravaListaSMS("ListaSms.txt")
FUNCTION GravaListaSMS(cArq)
   DbUseArea(.T., "DBFCDX", "LISTASMS", "LISTASMS", .T.)
   INDEX ON TELEFONE+INDICE+DATA+HORA TAG "LISTASMS" TEMPORARY ADDITIVE
   FT_FUSE(cArq)
   FT_FGOTOP()
   DO WHILE !FT_FEOF()
      cLinha    := FT_FREADLN()
      cIndice   := SubStr(cLinha, 3, 2)
      cTelefone := SubStr(cLinha, 19, 15)
      cData     := SubStr(cLinha, 36, 8)
      cHora     := SubStr(cLinha, 46, 8)
      cMens     := SubStr(cLinha, 56, At("]", SubStr(cLinha, 56))-1)
      IF !LISTASMS->(DbSeek(cTelefone+cIndice+cData+cHora))
         LISTASMS->(DbAppend())
         LISTASMS->Indice   := cIndice
         LISTASMS->Telefone := cTelefone
         LISTASMS->Data     := cData
         LISTASMS->Hora     := cHora
         LISTASMS->Mensagem := cMens
         LISTASMS->(DbCommit(), DbUnLock())
      ENDIF   
      hwg_DoEvents()
      FT_FSKIP()
   ENDDO
   FT_FUSE()
   LISTASMS->(DbCloseArea())
RETURN Nil
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Chamada HTTP para envio de SMS

Mensagempor rossine » 08 Jan 2020 11:17

Olá Alaxandre,

Você continua usando o modem da daruma para enviar SMS, ou hoje, já existe solução melhor que não necessite do modem ?

Obrigado,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Anterior



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro