Arduino Uno R3 cannot detect GPRS Shield SIM900
After many trials, I found the solution to my problem, thanks to @Majenko for mentioning the jumpers.
I am still stacking the SIM900 module on top of Arduino.
Switching the jumpers from D1 and D0 to D8 and D7 solved the problem (see green square on the pic)
I don't know why it needs to be on D8 and D7 since on board it says TX=0 and RX=1 and vise-versa for Arduino

Then used the below sketch from this tutorial &gt; https://lastminuteengineers.com/sim900-gsm-shield-arduino-tutorial/
#include &lt;SoftwareSerial.h&gt;

//Create software serial object to communicate with SIM900
SoftwareSerial mySerial(7, 8); //SIM900 Tx &amp; Rx is connected to Arduino #7 &amp; #8

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM900
  mySerial.begin(9600);

  Serial.println(&quot;Initializing...&quot;);
  delay(1000);

  mySerial.println(&quot;AT&quot;); //Handshaking with SIM900
  updateSerial();
  mySerial.println(&quot;AT+CSQ&quot;); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println(&quot;AT+CCID&quot;); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println(&quot;AT+CREG?&quot;); //Check whether it has registered in the network
  updateSerial();
}

void loop()
{
  updateSerial();
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

With this, it displays correct output on serial monitor based on the tutorial and I can confirm that its working as well on my windows form application as it can send sms from the application.